数组分为不可变数组(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);
}