------- android培训、java培训、期待与您交流! ----------
1,NSArray是OC中的数组类。
c语言数组弊端
1)只能存放一种数据类型
2)不能很方便的动态添加数组元素,不能很方便的动态删除数组元素
NSArray的使用注意
1)只能存放任意OC对象,并且是有顺序的
2)不能存储非OC对象,比如int,float等
3)长度不可变,一旦初始化完毕,它里面的内容是永远固定,不能删除也不能添加
NSArray的类创建方式(都是以array开头)
+ (instancetype)array;
+ (instancetype)arrayWithObject:(id)anObject;
+ (instancetype)arrayWithObjects:(id)firstObj, ...;
+ (instancetype)arrayWithObjects:(id)firstObj, ...;
+ (instancetype)arrayWithArray:(NSArray *)array;
+ (id)arrayWithContentsOfFile:(NSString *)path; // 读取一个xml文件.+ (id)arrayWithContentsOfURL:(NSURL *)url; // 读取一个xml文件.
数组使用注意:
NSArray直接使用NSLog()作为字符串输出时是小括号括起来的形式。
NSArray中不能存储nil,因为NSArray认为nil是数组的结束(nil是数组元素结束的标记)。nil就是0。0也是基本数据类型,不能存放到NSArray中。
NSArray *array = [NSArray array]; //这样的数组永远是空的,不可能向其中增加值。(不可变性)
NSArray的常见用法
- (NSUInteger)count;获取集合元素个数
- (id)objectAtIndex:(NSUInteger)index;获得index位置的元素
-(BOOL)containsObject:(id)anObject;是否包含某一元素
- (id)lastObject;返回最后一个元素
- (id)firstObject;返回最后一个元素
- (NSUInteger)indexOfObject:(id)anObject;查找anObject元素在数组中的位置(如果找不到,返回-1)NSNotFound
- (NSUInteger)indexOfObject:(id)anObject inRange:(NSRange)range;在range范围内查找anObject元素在数组中的位置
自从2012年开始, Xcode的编译器多了很多自动生成代码的功能,使得OC代码更加精简数组的创建
之前
[NSArray arrayWithObjects:@"Jack", @"Rose", @"Jim", nil];
现在
@[@"Jack", @"Rose", @"Jim"];数组元素的访问
之前
[array objectAtIndex:0];现在
array[0];
NSArray遍历
1)下标遍历
3)使用block遍历
//数组
NSArray *arr =[[NSArray alloc] initWithObjects:@"1",@"2",@"3",@"4", nil];
NSLog(@"%@",arr);
NSArray *a2 =[[NSArray alloc] initWithArray:arr];
for(int i=0;i<arr.count;i++){
NSLog(@"%@",arr[i]);
}
for(NSString *str in a2){
NSLog(@"%@",str);
}
[arr enumerateObjectsUsingBlock:^(id obj,NSUInteger idx,BOOL *stop){
NSLog(@"第 %ld 值 %@",idx,obj);
if([obj integerValue]==3){
*stop = YES;
}
}];
NSMutableArray *array = [NSMutableArray array];
//创建空数组
NSMutableArray *arr = [NSMutableArray array];//创建数组,并且指定长度为5,此时也是空数组
NSMutableArray *arr2 = [[NSMutableArray alloc] initWithCapacity:5];//创建一个数组,包含两个元素
NSMutableArray *arr3 = [NSMutableArray arrayWithObjects:@"1",@"2", nil];//调用对象方法创建数组
NSMutableArray *arr4 = [[NSMutableArray alloc] initWithObjects:@"1",@"2", nil];
- (void)addObject:(id)object;添加一个元素
- (void)addObjectsFromArdObray:(NSArray *)array;添加otherArray的全部元素到当前数组中
- (void)insertObject:(id)anObject atIndex:(NSUInteger)index;在index位置插入一个元素
- (void)removeLastObject;删除最后一个元素
- (void)removeAllObjects;删除所有的元素
- (void)removeObjectAtIndex:(NSUInteger)index;删除index位置的元素
- (void)removeObject:(id)object;删除特定的元素
- (void)removeObjectsInRange:(NSRange)range;删除range范围内的所有元素
- (void)replaceObjectAtIndex:(NSUInteger)index withObject:(id)anObject;用anObject替换index位置对应的元素,简写:arr[0]=@"1";
- (void)exchangeObjectAtIndex:(NSUInteger)idx1 withObjectAtIndex:(NSUInteger)idx2;交换idx1和idx2位置的元素