Objective-C----NSArray、NSMutableArray

讲解:

NSArray 类有两个限制。首先,它只能存储 Objective-C 的对象,而不能存储原始的 C 语言基础数据类型,如 int 、float、 enum、struct 和 NSArray 中的随机指针。同时,你也不能在 NSArray 中存储 nil (对象的零值或 NULL 值)。有很多种方法可以避开这些限制。

可以通过类方法 arrayWithObjects: 创建一个新的 NSArray 。发送一个以逗号分隔的对象列表,在列表结尾添加 nil 代表列表结束(这就是不能在数组中存储 nil 的一个原因)。

NSArray *array = [NSArray arrayWithObjects:@"one", @"two", @"three", nil]; 

这行代码创建了一个有 NSString 字面量对象组成的含 3 个元素的数组。你也可以使用数组字面量格式来创建一个数组,它与 NSString 字面量格式非常类似,区别是用方括号代替了引号,如下所示。

NSArray *array2 = @[@"one", @"two", @"three"];

虽然,array 和 array2 对象不同,但它们的内容是一样的,而且后一种的输入量明显比前一种少很多。

注:使用字面量语法时不必在结尾处特意补上 nil 。

上代码:


    /*
     *   NSArray  (不可变数组)
     */

    //定义 NSArray 类的对象
    NSArray *array1 = [[NSArray alloc] initWithObjects:@"1", @2, @"好好", @"abcdef", nil] ;
    NSLog( @"%@", array1 ) ;
    NSLog( @"%@", [array1 description] ) ;

    NSArray *array2 = [NSArray arrayWithObjects:@"1", @3, @"??", nil] ;
    NSLog( @"%@", array2 ) ;

    // 数组的语法糖形式(literal, 字面量)
    NSArray *array3 = @[@"1", @3, @"?(~﹃~)~zZ"] ;
    NSLog( @"%@", array3 ) ;

    //获取数组元素个数
    NSInteger count = [array3 count] ;
    NSLog( @"%ld", count ) ;

    //通过下标获取对应的对象
    for ( int i = 0; i < count; i++ ) {
        NSLog( @"%@", [array3 objectAtIndex:i] ) ;
        NSLog( @"%@", array3[i] ) ;
    }

    // 通过对象去查找它在数组中的对应下标
    NSInteger index =[array3 indexOfObject:@3] ;
    NSLog( @"%ld", index ) ;

    NSString *strFile = [NSString stringWithContentsOfFile:@"/Users/lanouhn/Desktop/words.txt" encoding:NSUTF8StringEncoding error:nil] ;
    NSLog( @"%@", strFile ) ;
    // componentsSeparatedByString 通过给定的字符串将原有字符串截取成多个子字符串并保存在数组中返回
    NSArray *array4 = [strFile componentsSeparatedByString:@" "] ;
    NSLog( @"%@", array4 ) ;

    /*
     *      NSMultableArray (可变数组)
     */

    NSMutableArray *mutableArray1 = [[NSMutableArray alloc] initWithArray:array1] ;
    NSLog( @"%@", mutableArray1 ) ;

    NSMutableArray *mutableArray2 = [NSMutableArray arrayWithArray:array1] ;
    NSLog( @"%@", mutableArray2 ) ;

    //添加元素
    [mutableArray2 addObject:@44] ;
    NSLog( @"%@", mutableArray2 ) ;

    //插入元素
    [mutableArray2 insertObject:@"insert" atIndex:2] ;
    NSLog( @"%@", mutableArray2 ) ;

    //替换元素
    [mutableArray2 replaceObjectAtIndex:2 withObject:@55] ;
    NSLog( @"%@", mutableArray2 ) ;

    //交换元素
    [mutableArray2 exchangeObjectAtIndex:2 withObjectAtIndex:3] ;
    NSLog( @"%@", mutableArray2 ) ;

    //删(移)除最后一个元素
    [mutableArray2 removeLastObject] ;
    NSLog( @"%@", mutableArray2 ) ;

    //删(移)除指定下标的元素
    [mutableArray2 removeObjectAtIndex:0] ;
    NSLog( @"%@", mutableArray2 ) ;

    //删(移)除所有对象
    [mutableArray2 removeAllObjects] ;
    NSLog( @"%@", mutableArray2 ) ;

时间: 2024-07-31 14:27:04

Objective-C----NSArray、NSMutableArray的相关文章

Foundation框架(NSArray、NSMutableArray)

第一讲 NSArray.NSMutableArray 一.NSArray 概述:NSArray是OC中的数组类,开发中建议尽量使用NSArray替代C语言中的数组,C语言中数组的弊端,int array[4] = {10, 89, 27, 76};只能存放一种类型的数据.(类型必须一致),不能很方便地动态添加数组元素.不能很方便地动态删除数组元素(长度固定). 使用注意:只能存放任意OC对象, 并且是有顺序的,不能存储非OC对象, 比如int\float\double\char\enum\str

IOS开发之旅-IOS常用数据结构NSArray、NSMutableArray、NSDictionary、NSMutableDictionary介绍

NSArray NSArray基本用法 void arrayTest1() { //数组初始化最后必须以nil结尾,表示数组元素结束 NSArray *array1 = [[NSArray alloc]initWithObjects:@"item0",@"item1",@"item2",@"item3",@"item4",nil]; NSLog(@"%@",array1); /*( it

OC中Foundation框架之NSArray、NSMutableArray

NSArray概述 1 NSArray是OC中的数组类 NSArray特点 1 1)只能存放任意OC对象,并且是有顺序的 2 2)不能存放非OC对象,比如int/float/double/char/enum/struct等 3 3)它是不可变的,一但初始化完毕后,它里面的内容就永远是固定的,不能删除里面的元素,也不能再玩里面添加元素 NSArray的创建方式 1 +(instancetype)array; 2 +(instancetype)arrayWithObject:(id)anObject

NSArray、NSMutableArray基本用法

郝萌主倾心贡献,尊重作者的劳动成果,请勿转载. 如果文章对您有所帮助,欢迎给作者捐赠,支持郝萌主,捐赠数额随意,重在心意^_^ 我要捐赠: 点击捐赠 Cocos2d-X源码下载:点我传送 游戏官方下载:http://dwz.cn/RwTjl 游戏视频预览:http://dwz.cn/RzHHd 游戏开发博客:http://dwz.cn/RzJzI 游戏源码传送:http://dwz.cn/Nret1 初始化方法: 1.init返回一个空数组 2.initWithArray从已有数组初始化 3.i

Foundation 框架 NSArray、NSMutableArray排序

一.使用selector对数组进行排序(无返回) 数组 book 中包含 AddressCard对象. 1.对数组调用 sortUsingSelector方法 1 -(void) sortByName 2 { 3 SEL s = @selector(compareName:); 4 [book sortUsingSelector: s]; 5 } 2.在AddressCard类中添加比较方法:compareName 1 -(NSComparisonResult) compareName: (Ad

OC NSSet、NSMutableSet、NSArray、NSMutableArray

不可变长度的Set @interface NSSet : NSObject <NSCopying, NSMutableCopying, NSSecureCoding, NSFastEnumeration> 初始化方法 + (instancetype)set; //声明一个空集 + (instancetype)setWithObject:(id)object; + (instancetype)setWithObjects:(const id [])objects count:(NSUIntege

《黑马程序员》 NSArray和NSMutableArray的使用(Objective - c语法)

------- <a href="http://www.itheima.com" target="blank">Windows Phone 7手机开发</a>.<a href="http://www.itheima.com" target="blank">.Net培训</a>.期待与您交流! ------- 1 NSArray 的使用方法 • Foundation中数组(NSAr

OC中的NSArray和NSMutableArray、NSDictionary和NSMutableDictionary用法

一:NSArray 和NSMutableArray 1: NSArray:不可变数组 NSArray是OC中使用的数组,只能用来存放OC对象,不能存放非OC对象如基本数据类型 它使不可变的,一旦初始化完毕,内容不能改变,也不能添加元素. 而C语言中的数组只能存放一种数据类型 (1) 普通数组的用法 // 普通数组的创建 // int arr[5] = {1,3,4}; // 对象数组的创建 // Person *p = [[Person alloc] init]; // Person *arrP

Foundation框架中NSArray和NSMutableArray

=================== NSArray ====================(不可变数组,一旦建立就不能被更改) Ordered collection of objects. Immutable(you cannot add or remove objects to it once it’s created)Important methods:+ (id)arrayWithObjects:(id)firstObject, ...;    // nil terminated -

Objective-C 下用 NSArray 和 NSMutableArray 定义二维数组跟多维数

Objective-C 下用 NSArray 和 NSMutableArray 定义二维数组跟多维数组 目录 问题描述 Objective-C 中的数组对像 NSArray 和 NSMutableArray 简介 二维数组:嵌套两次的 NSMutableArray 多维数组:嵌套多次的 NSMutableArray 问题描述 说实话,不太习惯面向对象编程,所以在操作 Objective-C 中数组对象时,总是忍不住跟 C 中的数组做比较,正好要建立一个二维数组,需要根据二维数组的下标来做相应的设