03-Foundation中NSMutableArray遍历、复制和排序

目录:ios

1、NSString补充api

2、NSMutableArray可变数组数组

3、遍历框架

4、NSArray支持的新语法工具

5、数组复制开发工具

6、数组的排序spa

SDK、API、Foundation、Cocoa是什么?指针

SDK Software Development Kit开发工具包,目标文件.o实现库,非开源。code

API Application Program Interface是应用程序接口,是.h文件的声明库。对象

Cocoa Foundation框架【API、SDK】、UIKIT框架【API、SDK】

回到顶部

1、NSString补充

1 截取字符串

* 从指定下标开始,包含开始位置,截取字符串

SubStringFromIndex从中间到最后

* 从0开始,到指定位置,不包含指定位置

SubStringToIndex 从开始到中间

* 指定范围截取字符串

SubStringWithRange

2 字符串大小写转换

* 将全部的字符串内容变为大写

uppercaseString 会建立一个新的字符串

* 将全部的字符串内容变为小写

lowercaseString

* 将单词的首字母大写

capitalizedString

3 获得字符串的前缀和后缀

TRStudent.h

若是一个字符串是文件名,能够获得这个字符串的前缀和后缀。

* 判断一个文件是否有某个前缀,返回布尔类型

BOOL b = [str hasPrefix:@"TR"]

* 判断一个文件是否有某个后缀,返回布尔类型

BOOL b = [str hasSuffix:@".h"]

回到顶部

2、NSMutableArray可变数组

 1         //1 初始化方法  2 
 3         //NSMutableArray* array = [NSMutableArray array];
 4 
 5         NSMutableArray* array2 = [NSMutableArray arrayWithObjects:@"one",@"two", nil];  6 
 7         //2 向数组中添加一个元素
 8 
 9         [array2 addObject:@"three"]; 10 
11         //3 在指定位置添加一个元素
12 
13         [array2 insertObject:@"four" atIndex:2]; 14 
15         //4 删除指定下标的元素
16 
17         [array2 removeObjectAtIndex:2]; 18 
19         //5 删除指定对象(删除对象的地址)
20 
21         [array2 removeObject:@"three"]; 22 
23         //6 替换指定下标的元素
24 
25         [array2 replaceObjectAtIndex:1 withObject:@"2"]; 26 
27         //7 删除数组中全部元素
28 
29  [array2 removeAllObjects]; 30 
31         NSLog(@"%@",array2);

回到顶部

3、遍历(三种遍历方式)

1 for循环

2 快速枚举

 1 //2 forin  2 
 3         //NSString* str 保存数组元素的变量  4 
 5         //array 要遍历的数组
 6 
 7         for (NSString* str in array) {  8 
 9             NSLog(@"arrar:%@",str); 10 
11         }

练习:National类(名称China)拥有多个地区,地区Area(名称、人口)。建立三个地区

(beijing3000,guangzhou2000,shanghai1000)

显示全部城市及人口

只显示北京的人口

3 迭代器遍历

 1 //* 每一个数组和集合都有本身的迭代器
 2 
 3 NSEnumerator* enumer = [array objectEnumerator];  4 
 5 //* 每次迭代时要发送消息  6 
 7 //[enumer nextObject]  8 
 9 //返回当前指向数组中的对象,而且自动向下移动一位, 10 
11 //若是没有对象时,则返回nil,且终止迭代 12 
13 //向数组中取对象
14 
15  id obj; 16 
17         while (obj = [enumer nextObject]) {//自动取值,而后向下移动一下
18 
19             NSString* str = obj; 20 
21             NSLog(@"str:%@",str); 22 
23         }//运行此循环的时候先取出一个值,而后向下移动

回到顶部

4、NSArray支持的新语法

1 ios6.0及osx10.8以后,编译器LLVM编译支持

2 初始化数据

OC:[NSArray arrayWithObjects:@"a",@"b",nil]

OC新语法:NSArray* array = @[@"a",@"b"];

3 根据下标获得数组中的元素的值

OC:[array objictAtIndex:0];

OC新语法:array[0];

回到顶部

5、数组复制

1 分深拷贝(内容复制)、浅拷贝(引用复制)

2 复制对象:指针复制(浅拷贝)、内容复制(深拷贝)

3 数组中的元素,对象的引用

4 浅拷贝:新数组和原有数组共享内存中的对象

NSArray* array2 = [[NSArray alloc] initWithArray:array copyItems:NO];

5 深拷贝:新数组和原有数组都有独享的对象

NSArray* array3 = [[NSArray alloc] initWithArray:array copyItems:YES];

注:深拷贝数组的对象必须遵照NSCopying协议,而且实现copyWithZone方法,若是不但想复制对象,还要复制对象的值,要添加有参的copyWithZone方法

回到顶部

6、数组的排序

1 可让数组中的对象按照必定规则进行排序

2 类必须实现compare方法(排序的规则)

3 规则原理:0相等 -1升序 1降序

4 发送排序消息

NSArray* array2 = [array sortedArrayUsingSelector:@selector(compare:)];

练习:建立5个学生对象,按姓名排序

     做业:1.按年龄排序升序、降序。

              2.先年龄升序再按姓名升序(年龄相等的人,再按姓名排序)

     做业:

      联系人信息:TelphoneInfo 1

           name:ysy 2             谁的联系人信息

           userInfos:  2            全部好友信息

           -addUserInfo   3     添加好友

           -removeUser    7    删除好友

           -lookupUserInfoByName  6查找好友信息

            -list 4            查看全部好友信息

           -sort   5                   查看全部好友信息排序

 

      我的信息:UserInfo 1

           name:2         好友的姓名

           email:2      

           telphone:2

           -showInfo;3     查看好友的详细信息

相关文章
相关标签/搜索