OC 数组

本文详细介绍了Objective-C中的数组概念,包括不可变数组(NSArray)和可变数组(NSMutableArray)的区别及使用方法。涵盖数组创建、操作、排序等实用技巧。

数组分为不可变数组(NSArray)和可变数组(NSMutableArray),其中NSMutableArray继承于NSArray,使用数组要注意以下几个问题

1.注意数组不要越界
2.不能在数组中间存放nil,nil是数组结束的标志
3.数组会对加入其中的对象自动把引用加1
4.与C语言不同的是,数组中的每一个元素都必须是对象

下面是数组中常用的方法

1.创建只带有一个元素的不可变数组
NSArray *array1 = [NSArray arrayWithObject:@"Mike"];

2.创建一个里面有多个元素的不可变数组(两种方法)
NSArray *array2 = [NSArray arrayWithObjects:@"Rick",@"Jack",@"Leo",nil]; //注意尾部要加nil,否则会报警告

NSArray *array3 = @[@"Rick",@"Jack",@"Leo",@5];//用此方法创建的话在尾部无需再加上nil,是一种更快捷方法。这里注意由于数组里的元素都必须是对象,所以基本数据类型5不能直接放进去,要把它封装成对象@5( @5 等价于 [NSNumber numberWithInt:5] )

3.通过一个数组创建一个新的数组
NSArray *array4 = [NSArray arrayWithArray:array3];

4.从本地读取数组文件
NSArray *array5 = [NSArray arrayWithContentsOfFile:@"路径内容"];

5.从网络读取数组
NSArray *array6 = [NSArray arrayWithContentsOfURL: [NSURL URLWithString:@"http://www.baidu.com"] ];

6.求数组中元素个数
NSUInteger count = array6.count;

7.访问数组中的第一个元素(两种方法)
NSString *str1 = [array6 objectAtIndex:0];
NSString *str2 = array6[0];

8.通过数组中的元素查找对应的下标
NSUInteger index = [array3 indexOfObject:@"Rick"];
NSLog(@"此元素的下标为:%lu",index);

9.判断数组是否存在某个元素
BOOL result = [array3 containsObject:@"QQQ"];

10.向不可变数组增加一个元素
NSArray *newArray1 = [array3 arrayByAddingObject:@"JJ"];
//注意,并不是真正意义上的在原数组上增加元素,而是创建一个新的数组,将原数组中的元素和新增加的元素放置到新数组里面,原来的数组并没有改变。

11.通过“-”把字符串分解成一个数组("-"可以根据实际情况替换成任何字符串)
NSString *string1 = @"020-5151-453-77";
NSArray *array7 = [string1 componentsSeparatedByString:@"-"];

由于NSMutableArray继承于NSArray,所以以上方法NSMutableArray都拥有,不过NSMutableArray还拥有一些独有的方法

1.在数组末尾添加一个元素
NSMutableArray *mArray1 = @[@1,@2,@3];
[mArray1 addObject:@5];

2.在数组指定位置插入一个元素
[mArray1 insertObject:@4 atIndex:3];

3.替换,将数组指定位置上的元素替换成用户想要的元素
[mArray1 replaceObjectAtIndex:1 withObject:@"Rick"];

4.交换,将数组指定位置上的两个元素交换位置
[mArray1 exchangeObjectAtIndex:2 withObjectAtIndex:3];

5.删除指定元素
[mArray1 removeObject:@1];

6.删除指定位置上的元素
[mArray1 removeObjectAtIndex:1];

7.删除数组中最后一个元素
[mArray1 removeLastObject];

8.删除数组所有元素
[mArray1 removeAllObjects];

对数组排序的方法

数组的简单排序方法
NSArray *array = [NSArray arrayWithObjects:@"456",@"123",@"789", nil];
NSArray *sortedArray = [array sortedArrayUsingSelector:@selector(compare:)];
NSLog(@"排序后:%@",sortedArray);
使用NSSortDescriptor描述排序
NSMutableArray *mArr = [NSMutableArray new];
for(int i = 0;i<10;i++)
   {
       NSNumber *num = [NSNumber numberWithInt:(arc4random_uniform(100)+1)];
       [mArr addObject:num];
   }

NSSortDescriptor *d = [NSSortDescriptor sortDescriptorWithKey:nil ascending:YES];
NSArray *newArray1 =[mArr sortedArrayUsingDescriptors:[NSArray arrayWithObjects:d, nil]];
for (NSString *k in newArray) 
   {
       NSLog(@"%@",k);
   }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值