A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© supergcs 中级黑马   /  2014-11-16 11:51  /  1672 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 supergcs 于 2014-11-16 11:53 编辑
  1. 一、NSArray类的常用操作

  2. NSArray数组一旦创建就决定了是不是可变,而且永远是可变(NSMutableArray)或不可变(NSArray)。NSArray保存的对象可以是不同的对象。但只能保存对象,int ,char,double等基本数据类型不能直接保存,需要通过转换成对象才能加入数组。使用NSArray的类方法arry创建数组


  3.         黑马程序员——OC中的Foundation框架中集合类NSString、NSArray、NSSet、NSDictionaty - songxing10000 - 十一岁的加重


  4.   1、创建时定义为空数组,那么array数组将永远是空数组

  5.     NSArray *array = [NSArray array];

  6.   2、创建数组对象有两种方式

  7.     // 第一种方式:数组中包含了一个NSString对象

  8.      NSArray *array = [NSArray arrayWithObject:@"Jack"];



  9.     //数组中包含了多个对象并以nil结尾,nil是用来标识数组元素结束的标识

  10.     NSArray *array1 = [NSArray arrayWithObjects:@"Jack",@"Rose", nil];



  11.     //注意:因此OC数组中不能存放空对象,下面这样写是错误的(倒第二个nil)

  12.    NSArray *array1 = [NSArray arrayWithObjects:@"Jack",nil, nil];

  13.    

  14.    // 第二种方式:快速创建(推荐使用)

  15.     NSArray *array2 = @[@"Jack",@"Rose"];



  16.     // 获取数组的长度 array1.count;   

  17. NSUInteger count = [array1 count];   

  18. NSLog(@"%ld",count);



  19.     3、访问数组中的对象的两种方式

  20.   // 数组中索引为1的对象,OC中提供的方法 返回:Jack

  21.     NSString *str1 = [array1 objectAtIndex:0];

  22. // 编译器特性:自动转换为上面的形式来访问 返回:Jack

  23. NSString *str2 = array1[0];               

  24.    

  25.     4、遍历数组的三种方式

  26.     // 第一种:

  27. for (int i = 0; i<array1.count; i++) {        

  28. NSLog(@"%@",array1[i]);         // 数组中存放的是对象可以用%@输出

  29.         if (i ==0) {                                //想要在几个时停止

  30.             break;

  31.         }

  32.     }



  33.     // 第二种:将array1数组中的每个对象拿出来赋给obj然后依次打印

  34. for (id obj in array1) {            // id obj 代表数组中的对象        

  35. // 获取obj对象在数组中的索引

  36.         NSUInteger index = [array1 indexOfObject:obj];

  37.         NSLog(@"%ld-->%@",index,obj);

  38.     }



  39.     // 第三种:使用Block 每次从数组中遍历一个元素后就传递给block,block也相应的执行一次

  40.     // block中的id obj对应数组中的元素,NSUInteger idx对应数组中元素的索引 ,BOOL用来停止遍历

  41. [array1 enumerateObjectsUsingBlock:



  42. ^(id obj, NSUInteger idx, BOOL *stop) {

  43.         

  44.         NSLog(@"%ld-->%@",idx,obj);

  45.         

  46.         // 如果索引为0 立即停止遍历

  47.         if (idx ==0) {

  48.             *stop = YES;

  49.         }

  50.     }];

  51. BOOL *stop这个可以下面这样理解

  52. for (int i = 0; i<array.count; i++)

  53.        {

  54.            // 用来标记是否需要停止遍历

  55.          BOOL isStop = NO;

  56.    

  57.          // 取出元素

  58.            id obj = array[i];        

  59.      myblock(obj, i, &isStop);   

  60.     if (isStop)

  61.        {

  62.           break;

  63.         }

  64.     }



  65. 二、NSMutableArray的基本操作:



  66.    1、创建NSMutableArray数组

  67.   // 创建可变数组

  68.     NSMutableArray *mutableArray = [NSMutableArray array];

  69. NSMutableArray *array = [NSMutableArray arrayWithObjects:@"rose", @"jim", nil];  

  70. 注意:@[]返回的是不可变NSArray数组 这样会报错

  71.       NSMutableArray *mutalbeArray2 = @[@"张三",@"李斯"];  



  72.     2、为可变数组增加任意对象

  73.      

  74. Person *person = [[Person alloc] init];      

  75. [mutableArray addObject:person];

  76.     [mutableArray addObject:@"Jack"];

  77.     [mutableArray addObject:@"John"];

  78.     [mutableArray addObject:10]; 数组中不可以存放基本数据类型



  79.    3、 从数组中删除指定的元素

  80.    

  81. [mutableArray removeObject:@"John"];   

  82. [mutableArray removeObjectAtIndex:0];

  83.     // 将数组中的元素全部删除

  84.     [mutableArray removeAllObjects];

  85. [NSMutableArray arrayWithCapacity:6] :初始化可变数组对象的长度,如果后面代码继续添加数组超过长度6以后NSMutableArray的长度会自动扩充,6是自己可以设置的颗粒度。

  86. [array addObject:...] : 向可变数组尾部添加数据对象。

  87. [array addObjectsFromArray:..] :向可变数组尾部添加一个数组对象。
复制代码

6608465105166982748.jpg (22.45 KB, 下载次数: 16)

6608465105166982748.jpg

2 个回复

倒序浏览
讲的很好,值得学习ing!
回复 使用道具 举报
你学到哪了?
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马