NSArray是oc中的数组类,开发中建议使用NSArray替代C语言中的数组。
C语言中数组和OC下的NSArray的不同之处有如下:
1.c数组只能存放一种类型的数据(类型必须一致),OC数组可以添加任意类型的OC类型;
2.c数组不能方便的动态添加、删除数组元素,长度固定,OC动态数组可以;
NSArray的使用注意:
1. 只能存放任意 OC 对象,并且是有顺序的, 不能存放非 OC 对象,比如: int/float/double/char/enum/struct 等它是不可变的,一旦初始化完毕后,它里面的内容就永远固定的,不能删除里面的元素,也不能再往里面添加元素;
2.NSArray直接使用NSLog()作为字符串输出时是小括号括起来的形式;NSArray中不能存储nil,因为NSArray认为nil是数组的结束标记,nil也是基本数据类型,不能存放到NSArray中。
NSArray的创建方式:
快速创建方式:NSArray *a = @[@”12”,@”23”,@”33”@”44”,nil];
快捷方式访问:a[1];
NSArray *arr1 = [NSArray array]; //空数组
NSArray *arr2 = [NSArray arrayWithObject:@"1"];
NSArray *arr3 = [NSArray arrayWithObjects:@"1",@"2",nil];
NSArray *arr4 = [[NSArray alloc] initWithObects:@"1",@"2",nil;
NSArray *arr5 = [NSArray arrayWithArray:arr4];
获取元素的个数:
<span style="font-size:14px;">NSUInteger count = [arr2 count];</span>
id object = [arr2 objectAtIndex:1];
判断数组中是否还有某个元素:
BOOL flag = [arr2 containsObject:@"1"];
获取数组的最后一个元素:
id objcet = [arr3 lastObject];
查找object元素在数组的位置(如果找不到就返回-1即NSNotFound)
NSUInteger index = [arr3 indexOfObject:@"2"];
if(index != NSNotFound)
{
NSLog(@"index = %d",index);
}
读文件:
NSString *path = @"路径/文件";
NSArray *arr = [NSArray arrayWithContentsOfFile:path];
写文件:
NSArray *arr = [NSArray initWithObjects:@"1",@"2",nil];
BOOL flag = [arr writeToFile:path atomically:YES];
if(flag)
{
NSLog(@"写入成功");
}
else
{
NSLog(@"写入失败");
}
NSString和NSArray关联:
NSArray *arr = [NSArray initWithObjects:@"400",@"1234",@"5678",nil];
NSString *str = [arr componentsJoinedByString:@”-”]; //400-1234-5678
//给一个字符串通过一个字符分解成一个数组保存
NSArray *arr2 = [str componentsSeparatedByString:@”-”];
NSMutableArray:它是NSArray的子类,NSArray一旦初始完毕后,它里面的元素永远是固定的,不能删除和添加元素,它是可变的,随时可以往里面添加更改删除元素
NSMutableArray注意事项:
快速创建方式下的NSMutableArray也是不可变的,不能添加元素
NSMutableArray *arr = @[@"1",@"2"];
[arr addObject:@"3"]; //这是错的
创建方式:
NSMutableArray *marr = [NSMutableArray array];
添加元素:
[marr addObject:@"1"]; //添加元素在最后位置
[marr insertObject: @"2" atIndex:0];</span><span style="font-size:18px;"> //插入元素在指定位置,后面的元素往后面移动一位
删除元素:
[marr removeLatObject]; //删除最后一个元素
[marr removeObject:@"2"]; //删除一个元素
[marr removeObjectAtIndex:0; // 删除某个索引的元素
[marr removeAllObject]; //删除所有的元素;
查找元素:
OOL flag = [marr containsObject:@"2"];
if(flag)
{
NSLog(@"数组中还有这个元素");
}
交换元素:
[marr exchangeObjectAtIndex:0 withObjectAtIndex:1];
替换元素:
[marr replaceObjectAtIndex:0 withObject: @"4"];// 替换某个索引下的元素
arr[1] = @”five”; //快速方式
NSArray和NSMutableArray的一些常用方法:
1.NSArray的类方法创建
+(instancetype)array;
+(instancetype)arrayWithObject:(id)anObject;
+(instancetype)arrayWithObjects:(id)anObject,,,....; //创建多个参数的数组
+(instancetype)arrayWithArray:(NSArray *)array;
+(id)arrayWithContentsOfFile:(NSString *)path; //读取一个xml文件
+(id)arrayWithContentsOfURL:(NSURL *) url; //读取一个url 协议file
2.对象方法创建:
-(NSArray *)init;
-(NSArray *)initWithObjects(id)anObject,,,....:
-(NSArray *)initWithArray;
-(NSArray *)initWihtContentsOfFile;
-(NSArray *)arrayWithContentsOfURL:(NSURL *) url;
NSArray的常见用法
-(NSUInteger)count; //获取集合元素的个数
-(id)objectAtIndex:(NSUInteger)index; //获取index位置的元素
-(BOOL)containsObject:(id)anObject; //判断数组中是否含有某个元素
-(id)lastObject;
-(id)firstObject;
-(NSUInteger)indexOfObject;(id)object; //查找object元素在数组的位置(如果找不到就返回-1)NSNotFound
-(NSUInteger)indexOfObject;(id)object inRange:(NSRange)range;//在range的范围查找object在数组中的位置
NSMutableArray的一些常用方法:
-(void)addObject:(id)object; //添加元素在最后位置
-(void)insertObject: (id)object atIndex:(int)index; //插入元素在指定位置,后面的元素往后面移动一位
-(void)removeLatObject; //删除最后一个元素
-(void)removeObject:(id)object; //删除一个元素
-(void)removeAllObject; //删除所有的元素;
-(void)removeObjectAtIndex:(int)index; // 删除某个索引的元素
-(void)replaceObjectAtIndex:(int) index withObject:(id)object;// 替换某个索引下的元素
-(BOOL)containsObject:(id)object; //数组中是否含有某个元素
-(void)exchangeObjectAtIndex:(int)index withObjectAtIndex:(int)aIndex; 两个下表元素进行交换