NSArray是不可变的,而且只能储存Object-c对象。另外,数组的最后一个元素一定是nil,表示结束。
注:这些集合类只能收集cocoa对象(NSOjbect对象),如果想保存一些原始的C数据(例如,int, float, double, BOOL等,
则需要将这些原始的C数据封装成NSNumber类型的,NSNumber对象是cocoa对象,可以被保存在集合类中。
对数组进行的操作可以分为:增(插入),删,改,查 , 取,遍历,排序,比较,
对于NSArray来说,因为本身是不可变的,所以对NSArray的操作没有增和删.
NSArray *array = [NSArray arrayWithObjects:@"hello",@"小妹妹",@"fuck you",@"baby", nil];
根据下标取数组中的元素
NSString *string = [array objectAtIndex:1];
字符串中是否包含某个字符,获取数组中某元素对应的下标(索引)
NSLog(@"%lu",(unsigned long)[array indexOfObject:@"boby"]);
取出数组最后一个元素
NSLog(@"%@",[array lastObject]);
- (BOOL)containsObject:(ObjectType)anObject; //查询数组中是否包含某一个元素,返回BOOL类型值
NSArray *array2 = [array arrayByAddingObject:@"嘿嘿嘿"];
for (NSString *str in array2) {
NSLog(@"%@",str);
}
NSString *string = [array2 componentsJoinedByString:@"~"];
NSLog(@"%@",string);
NSString *string = @"www.lanou3g.com";
NSArray *array = [string componentsSeparatedByString:@"."];
NSLog(@"%@",array);
NSArray *name = @[@"1",@"45",@"33"]; //字面量赋值
- (void)makeObjectsPerformSelector:(SEL)aSelector
将某一个方法操作作用在数组每一个元素上
NSMutableArray *array = [NSMutableArray arrayWithCapacity:0];
for (int i = 0; i < 10; i++) {
NSNumber *num = [NSNumber numberWithInteger:arc4random()% (90 -10 +1)+10 ]; //数组里存储的是对象,要把数字转换成NSNumber
[array addObject:num]; //把NSNumber的对象放入到数组当中
}
NSLog(@"array = %@",array);
for (int i = 0; i < [array count] - 1; i++) {
for (int j = 0; j < [array count] - i - 1; j++) {
if ([array objectAtIndex:j] > [array objectAtIndex:j+1]) { //直接使用了判断符号>或<或者==,需要将数组内的对象类型转化为基本数据类型,或者用compare方法
[array exchangeObjectAtIndex:j withObjectAtIndex:j+1]; //根据下标索引交换数组内的两个元素的位置
}
}
}
NSLog(@"array改 = %@",array);
系统提供了一个sortedArrayUsingSeletor:()函数,用于对字符串数组进行排序,会在排序完成后返回一个新的数组
NSArray *array = @[@"hehe",@"afd",@"fcf",@"igl"];
NSArray *newArray = [array sortedArrayUsingSelector:@selector(compare:)];
NSLog(@"%@",newArray);
数组中都是字符串,运用字符串比较的方法compare,返回值类型正好满足SEL参数的需求,SEL类型是方法名
同时我们也可以自己重写compare的方法,根据自己的需求进行比较排序
在对对象进行排序时,可以使用 NSSortDescriptor,
+ (instancetype)sortDescriptorWithKey:(nullable NSString *)key ascending:(BOOL)ascending
如果数组里元素直接可以排序,key填self,如果数组里元素为自定义类的对象,key填相应的属性
ascending:YES升序 NO降序
NSMutableArray,继承NSArray,在其基础上增加了:增删改三块功能
- (void)addObject:(ObjectType)anObject; //增加
- (void)insertObject:(ObjectType)anObject atIndex:(NSUInteger)index; //根据下标插入一个元素
- (void)removeLastObject; //移除最后一个元素
- (void)removeObjectAtIndex:(NSUInteger)index; //根据下标移除元素
- (void)replaceObjectAtIndex:(NSUInteger)index withObject:(ObjectType)anObject; //替换,根据一个元素替换数组内的一个元素
SDK中的常用的一定会记住,不常用的不需要记住,但需要知道系统提供给我们一个完善的功能,当我们遇到这种情况时,想起来,然后可以去SDK中寻找
原文:http://www.cnblogs.com/LE-Quan/p/5078304.html