03-Foundation中NSMutableArray遍歷、復制和排序


目錄:

一、NSString補充

二、NSMutableArray可變數組

三、遍歷

四、NSArray支持的新語法

五、數組復制

六、數組的排序

SDK、API、Foundation、Cocoa是什么?

SDK Software Development Kit開發工具包,目標文件.o實現庫,非開源。

API Application Program Interface是應用程序接口,是.h文件的聲明庫。

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

回到頂部

一、NSString補充

1 截取字符串

* 從指定下標開始,包含開始位置,截取字符串

SubStringFromIndex從中間到最后

* 從0開始,到指定位置,不包含指定位置

SubStringToIndex 從開始到中間

* 指定范圍截取字符串

SubStringWithRange

2 字符串大小寫轉換

* 將所有的字符串內容變為大寫

uppercaseString 會創建一個新的字符串

* 將所有的字符串內容變為小寫

lowercaseString

* 將單詞的首字母大寫

capitalizedString

3 得到字符串的前綴和后綴

TRStudent.h

如果一個字符串是文件名,可以得到這個字符串的前綴和后綴。

* 判斷一個文件是否有某個前綴,返回布爾類型

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

* 判斷一個文件是否有某個后綴,返回布爾類型

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

回到頂部

二、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);

回到頂部

三、遍歷(三種遍歷方式)

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         }//運行此循環的時候先取出一個值,然后向下移動

回到頂部

四、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];

回到頂部

五、數組復制

1 分深拷貝(內容復制)、淺拷貝(引用復制)

2 復制對象:指針復制(淺拷貝)、內容復制(深拷貝)

3 數組中的元素,對象的引用

4 淺拷貝:新數組和原有數組共享內存中的對象

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

5 深拷貝:新數組和原有數組都有獨享的對象

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

注:深拷貝數組的對象必須遵守NSCopying協議,並且實現copyWithZone方法,如果不但想復制對象,還要復制對象的值,要添加有參的copyWithZone方法

回到頂部

六、數組的排序

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     查看好友的詳細信息


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM