常见的NSArray方法
方法 | 描述 |
+ (instancetype)arrayWithObjects:(id)Obj , ... | 创建一个新数组,obj,...是其中的元素 |
- (BOOL)containsObject:(id)Obj | 确定数组中是否包含对象Obj(使用isEqual:方法) |
- (NSUInteger)indexOfObject:(id)Obj | 第一个包含对象Obj的元素索引号(使用isEqual:方法) |
- (NSUInteger)count | 数组中元素的个数 |
- (NSUInteger)indexOfObjectPassingTest:(BOOL (^)(id obj, NSUInteger idx, BOOL *stop))predicate | 传递每个对象obj,带有索引号idx到区块predicate中,如果obj通过测试返回YES,未通过返回NO,设置变量指针stop为YES结束处理 |
- (id)lastObject | 返回数组最后的元素 |
- (id)objectAtIndex:(NSUInteger)index | 返回下标为index的元素 |
- (void)makeObjectsPerformSelector:(SEL)aSelector | 将aSelector指示的消息发送给数组中得每个元素 |
- (void)enumerateObjectsUsingBlock:(void (^)(id obj, NSUInteger idx, BOOL *stop))block | 通过块获取数组中得每个元素,包括对象obj和对应的index,只有当所有元素都遍历完或设置变量指针stop为YES才结束处理 |
- (NSArray *)sortedArrayUsingSelector:(SEL)comparator | 根据指定comparator方法的比较器对数组进行排序 |
- (NSArray *)sortedArrayUsingComparator:(NSComparator)cmptr | 通过执行区块cmptr对数组进行排序 |
- (BOOL)writeToFile:(NSString *)path atomically:(BOOL)flag | 将数组写入指定的文件夹中,如果flag为YES,则先创建一个临时文件 |
常见的NSMutableArray方法(NSMutableArray类是NSArray的子类,因此上面的方法,对NSMutableArray也适用)
方法 | 描述 |
+ (instancetype)array | 创建一个空数组 |
+ (instancetype)arrayWithCapacity:(NSUInteger)numItems | 使用指定的初始numItems创建一个数组 |
- (instancetype)initWithCapacity:(NSUInteger)numItems | 使用指定的初始numItems初始化新分配的数组 |
- (void)addObject:(id)object | 将对象object添加到数组的末尾 |
- (void)insertObject:(id)anObject atIndex:(NSUInteger)index | 将对象object插入到数组的index位置 |
- (void)replaceObjectAtIndex:(NSUInteger)index withObject:(id)anObject | 将数组中下标为index的元素用anObject对象替换 |
- (void)removeObject:(id)anObject | 从数组中删除所有的anObject |
- (void)removeObjectAtIndex:(NSUInteger)index | 从数组中删除元素index |
- (void)sortUsingSelector:(SEL)comparator | 用comparator指定的比较器将数组排序 |
- (void)sortUsingComparator:(NSComparator)cmptr | 通过执行区块block对数组进行排序 |
示例代码:
#import <Foundation/Foundation.h> int main(int argc, const char * argv[]) { @autoreleasepool { //类方法数组创建 NSArray *array1 = [NSArray arrayWithObject:@"obj"]; NSArray *array2 = [NSArray arrayWithObjects:@"obj1", @"obj2", @"obj3", nil]; NSArray *array3 = [NSArray arrayWithArray:array2]; NSLog(@"array1 :%@", array1); NSLog(@"array2 :%@", array2); NSLog(@"array3 :%@", array3); //实例方法创建数组 NSArray *array4 = [[NSArray alloc] initWithObjects:@"AAA", @"bbb", nil]; NSLog(@"array4 :%@", array4); //数组个数 NSLog(@"array3 count :%d", [array3 count]); //访问元素 NSLog(@"obj at index :%@", [array2 objectAtIndex:2]); //追加(返回新的array对象) NSArray *array5 = [array3 arrayByAddingObject:@"ccc"]; NSLog(@"array5 :%@", array5); //根据指定的字符串连接数组元素 NSString *joinString1 = [array5 componentsJoinedByString:@"|"]; NSLog(@"joinString :%@",joinString1); //是否包含指定对象 NSLog(@"isContains :%d", [array5 containsObject:@"obj2"]); //查找某个对象所在索引 NSLog(@"indexOfObject :%d",[array5 indexOfObject:@"obj3"]); //最后一个元素 NSLog(@"lastObejct :%@", [array5 lastObject]); //遍历数组 for (id element in array5) { NSLog(@"element :%@", element); } //可变数组(期望容量设置为3) NSMutableArray *mutableArray = [NSMutableArray arrayWithCapacity:3]; //直接添加 [mutableArray addObject:@"aaa"]; [mutableArray addObject:@"eee"]; [mutableArray addObject:@"000"]; NSLog(@"addObject :%@", mutableArray); //插入元素 [mutableArray insertObject:@"ccc" atIndex:0]; NSLog(@"insertObject :%@", mutableArray); //移除指定元素 [mutableArray removeObject:@"ccc"]; NSLog(@"removeObject :%@", mutableArray); //移除指定下标元素 [mutableArray removeObjectAtIndex:0]; NSLog(@"removeObjectAtIndex :%@", mutableArray); //移除最后一个元素 [mutableArray removeLastObject]; NSLog(@"removeLastObject :%@", mutableArray); //添加数组 [mutableArray addObjectsFromArray:array5]; NSLog(@"addObjectsFromArray :%@", mutableArray); //移除指定数组中的内容 [mutableArray removeObjectsInArray:array2]; NSLog(@"removeObjectsInArray :%@", mutableArray); //指定索引替换对象 [mutableArray replaceObjectAtIndex:0 withObject:@"==="]; NSLog(@"replaceObjectAtIndex :%@", mutableArray); //删除全部对象 [mutableArray removeAllObjects]; NSLog(@"removeAllObjects :%@", mutableArray); } return 0; }