黑马程序员——Foundation框架NSArray和NSMUtableArray的介绍及使用

------<a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! -------


第一讲    NSArray的基本介绍

什么是NSArray?

NSArray是OC中的数组类, 开发中建议尽量使用NSArray替代C语言中的数组
C语言中数组的弊端
int array[4] = {10, 89, 27, 76};
只能存放一种类型的数据.(类型必须一致)
不能很方便地动态添加数组元素、不能很方便地动态删除数组元素(长度固定)

NSArray的使用注意

只能存放任意OC对象, 并且是有顺序的
不能存储非OC对象, 比如int\float\double\char\enum\struct等
它是不可变的, 一旦初始化完毕后, 它里面的内容就永远是固定的, 不能删除里面的元素, 也不能再往里面添加元素

NSArray的创建方式

NSArray的类方法创建
+ (instancetype)array;
+ (instancetype)arrayWithObject:(id)anObject;

+ (instancetype)arrayWithObjects:(id)firstObj, ...;
+ (instancetype)arrayWithArray:(NSArray *)array;
+ (id)arrayWithContentsOfFile:(NSString *)path; // 读取一个xml文件.
+ (id)arrayWithContentsOfURL:(NSURL *)url; // 读取一个xml文件.

//创建一个数组,有两个元素,分别为字符one和two
NSArray *arr = [NSArray arrayWithObjects:@"one",@"two",nil];
NSLog(@"%@",arr);

使用NSArray的对象方法创建

//创建一个数组,有两个元素,分别为字符one和two
NSArray *arr = [[NSArray alloc] initWithObjects:@"one",@"two",nil;]  //调用对象方法创建数组
NSLog(@"%@",arr);
使用已经存在数组创建新的数组

//创建一个数组,有两个元素,分别为字符one和two
NSArray *arr = [[NSArray alloc] initWithObjects:@"one",@"two",nil;]  
NSLog(@"%@",arr);
NSArray *arr2 = [[NSArray alloc] initWithArray:arr]
NSLog(@"%@",arr2);
NSArray的使用注意
数组使用注意:
NSArray直接使用NSLog()作为字符串输出时是小括号括起来的形式。
NSArray中不能存储nil,因为NSArray认为nil是数组的结束(nil是数组元素结束的标记)。nil就是0。0也是基本数据类型,不能存放到NSArray中。

NSArray *array = [NSArray array]; // 这样的数组永远是空的,不可能向其中增加值。(不可变性)

第二讲 NSArray 的常见用法

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元素在数组中的位置

//创建一个数组
NSArray *arr = [NSArray arrayWithObjects:@"1",@"2",@“3,@“4”,@"5"”nil];
NSLog(@"first:%@",[arr firstObject]);
NSLog(@"last:%@",[arr lastObject]);
NSLog(@"length:%ld",[arr count]);//arr.count

NSArray的简写形式

自从2012年开始, Xcode的编译器多了很多自动生成代码的功能, 使得OC代码更加精简
数组的创建
之前
[NSArray arrayWithObjects:@"Jack", @"Rose", @"Jim", nil];
现在
@[@"Jack", @"Rose", @"Jim"];
数组元素的访问
之前
[array objectAtIndex:0];
现在
array[0];


NSArray 的遍历方法

NSArray *arr = [NSArray arrayWithObjects:@"1",@"2",@“3,@“4”,@"5"”nil];
for(int i=0;i<arr.count;i++){
         NSLog(@"%@",arr[i]);
}

NSArray的快速遍历
也是使用for循环的增强形式

NSArray *arr = [NSArray arrayWithObjects:@"1",@"2",@“3,@“4”,@"5"”nil];
for(NSString *str in arr){
          NSLog(@"%@",str)
}

NSArray使用block遍历
NSArray *arr = [NSArray arrayWithObjects:@"1",@"2",@“3,@“4”,@"5"”nil];
//使用block
//BOOL *stop 如果赋值为YES则可以停止循环
[arr enumerareObjiectsUsingBlock:^(id obj,NSUInteger idx,BOOL *stop){
             NSLog(@"下标:%ld  值:%@",idx,obj);
}] 


NSArray *array = @[@"one",@"two",@"three"];
[array enumerateObjectsUsingBlock:^(id obj,NSUInteger idx,BOOL *stop){
         NSLog(@"%ld------%@",idx,obj);
          if(idx==1){
              *stop = YES;
   }
}]
NSArray 读写文件
NSArray数据写入到文件中
//创建一个数组
NSArray*arr = [NSArray arrayWithObjects:@"1",@"2",@"3",@"4",@"5", nil];
//写入数据到文件中
if([arr writeToFile:@"/Users/liwei/Desktop/arr.plist"atomically:YES]){
NSLog(@"写入成功!");
}
从文件读取数据到NSArray中

//创建一个数组,读取xml文件
NSArray*arr = [NSArray arrayWithContentsOfFile:@"/Users/liwei/Desktop/arr.xml"];
NSLog(@"%@",arr);
//创建一个数组,读取plist
NSArray*arr = [NSArray arrayWithContentsOfFile:@"/Users/liwei/Desktop/arr.plist"];
NSLog(@"%@",arr);
NSArray 与字符串
把数组元素链接成字符串
-(NSString *)componentsJoinedByString:(NSString *)separator;
这是NSArray的方法, 用separator作拼接符将数组元素拼接成一个字符串

字符串分割方法

//定义字符串
NSString*str =@"400-588-1688";
NSArray*arr = [str componentsSeparatedByString:@"-"];
NSLog(@"%@",arr);


第三讲  NSMutableArray介绍及基本使用

什么是NSMutableArray
NSMutableArray是NSArray的子类
NSArray是不可变的, 一旦初始化完毕后, 它里面的内容就永远是固定的, 不能删除里面的元素, 也不能再往里面添加元素
NSMutableArray是可变的, 随时可以往里面添加\更改\删除元素
// 创建一个空的NSMutableArray
NSMutableArray *array = [NSMutableArray array];

NSMutableArray基本使用方法

//创建空数组
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位置插入一个元素

NSMUtableArray *arr = [NSMUtableArray array];
[arr addObject:@"1"];
[arr addObject:@"three"];
//插入一个元素到下标为1的地方
[arr insertObject:@"two" atIndex:1];
NSLog(@"%@",arr);


-(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位置对应的元素

-(void)exchangeObjectAtIndex:(NSUInteger)idx1 withObjectAtIndex:(NSUInteger)idx2;
交换idx1和idx2位置的元素

NSMutableArray 错误用法
NSMutableArray *array = @[@"bob", @"steve", @"john"];
[array addObject:@“Peter”];// 错误,使用@[@"bob", @"steve", @"john"]这种方式创建的永远是NSArray(不可变数组)
// 正确
NSMutableArray *array = [NSMutableArray arrayWithArray:@[@"bob", @"steve", @"john"]];
[array addObject:@"Peter"];


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值