【黑马程序员】Foundation框架NSArray

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------

 

一、NSArray的介绍和基本使用

1、NSArray的基本介绍

1)什么是NSArray

       NSArrayOC中的数组类开发中建议尽量使用NSArray替代C语言中的数组

       C语言中数组的弊端:

int array[4] = {10, 89, 27, 76};

只能存放一种类型的数据(类型必须一致),不能很方便地动态添加数组元素、不能很方便地动态删除数组元素(长度固定)。

2NSArray的使用注意

       只能存放任意OC对象,并且是有顺序的;

       不能存储非OC对象,比如int\float\double\char\enum\struct等;

       它是不可变的一旦初始化完毕后,它里面的内容就永远是固定的,不能删除里面的元素,也不能再往里面添加元素;

 

2、NSArray的创建方式

1NSArray的类方法创建

       NSArray *arr = [NSArray array];  //空数组 没有意义

2)使用NSArray的对象方法创建

       //有一个元素(元素的类型必须是一个OC的对象)

       NSArray *arr1 = [NSArray arrayWithObject:@"abc"];

       //有多个元素

       NSArray *arr2 = [NSArray arrayWithObjects:@"one",@"two",@"three", nil];

3)使用已经存在数组创建新的数组 

       NSArray *arr3 = [NSArray arrayWithArray:arr2];

 

3、NSArray的使用注意

       数组使用注意:

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

 

三、NSArray的简写形式

之前

[NSArray arrayWithObjects:@"Jack", @"Rose", @"Jim", nil];

现在

@[@"Jack", @"Rose", @"Jim"];

数组元素的访问

之前

[array objectAtIndex:0];

现在

array[0];

 

四、NSArray的遍历方法

1、NSArray的下标遍历

//创建一个数组
NSArray *arr = [NSArray arrayWithObject:@”1”,@”2”,@”3”,@”4”,@”5”,nil];
      For(int i = 0;i<arr.count;i++){
            NSLog(@”%@”,arr[i]);
}

 

2、NSArray的快速遍历

//for循环的增强模式
NSArray *arr = [NSArray arrayWithObject:@”1”,@”2”,@”3”,@”4”,@”5”,nil];
       for(NSString *str in arr){
            NSLog(@”%@”,str);
}

 

3、NSArray使用block遍历

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

 

五、NSArray读写文件

1、NSArray数据写入到文件中

//创建一个数组
NSArray*arr = [NSArrayarrayWithObjects:@"1",@"2",@"3",@"4",@"5", nil]; 
//写入数据到文件中
     if([arr writeToFile:@"/Users/liwei/Desktop/arr.plist"atomically:YES]){
          NSLog(@"写入成功!");
}

 

2、从文件读取数据到NSArray中

      //创建一个数组,读取xml文件
    NSArray*arr = [NSArrayarrayWithContentsOfFile:@"/Users/liwei/Desktop/arr.xml"];
          NSLog(@"%@",arr);
      //创建一个数组,读取plist
      NSArray*arr = [NSArrayarrayWithContentsOfFile:@"/Users/liwei/Desktop/arr.plist"]; 
          NSLog(@"%@",arr); 

 

六、NSArray与字符串

1、把数组元素链接成字符串

       -(NSString *)componentsJoinedByString:(NSString *)separator;

这是NSArray的方法separator作拼接符将数组元素拼接成一个字符串

 

2、字符串分割方法

//定义字符串

NSString*str =@"400-588-1688";

NSArray*arr = [str componentsSeparatedByString:@"-"]; 

NSLog(@"%@",arr);

 

七、NSMutableArray及基本使用

1、NSMutableArray介绍

NSMutableArrayNSArray的子类;

NSArray是不可变的, 一旦初始化完毕后,它里面的内容就永远是固定的,不能删除里面的元素,也不能再往里面添加元素;

NSMutableArray是可变的随时可以往里面添加\更改\删除元素。

// 创建一个空的NSMutableArray

NSMutableArray *array = [NSMutableArray array];

 

2、NSMutableArray基本使用方法

       //创建空数组

NSMutableArray*arr = [NSMutableArrayarray];

       //创建数组,并且指定长度为5,此时也是空数组

NSMutableArray*arr2 = [[NSMutableArrayalloc] initWithCapacity:5];

       //创建一个数组,包含两个元素

NSMutableArray*arr3 = [NSMutableArrayarrayWithObjects:@"1",@"2", nil];

       //调用对象方法创建数组

NSMutableArray*arr4 = [[NSMutableArrayalloc] 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位置对应的元素 

       -(void)exchangeObjectAtIndex:(NSUInteger)idx1 withObjectAtIndex:(NSUInteger)idx2;

交换idx1idx2位置的元素 

 

3、NSMutableArray 错误用法

NSMutableArray *array = @[@"bob", @"steve", @"john"];

[array addObject:@“Peter”];

错误,使用@[@"bob", @"steve", @"john"]这种方式创建的永远是NSArray(不可变数组)

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值