NSMutableArray和NSArray的常用方法及相互轉換


NSMutableArray和NSArray的常用方法及相互轉換

// NSArray --> NSMutableArray 
NSMutableArray *myMutableArray = [myArray mutableCopy];
NSMutableArray *myMutableArray = [NSMutableArray arrayWithArray:myArray];
// NSMutableArray --> NSArray NSArray *myArray = [myMutableArray copy];
NSArray *myArray = [NSArray arrayWithArray: myMutableArray];

 

不可變數組對象:

NSArray 創建的是靜態數組,一旦創建之后,就再也不能添加和刪除數組中的對象了。

[arr  count]; 得到這個對象數組的長度。

[arr   objectAtIndex: ...]; 傳入數組腳標的id 得到數據對象。

[arr   arrayWithObjects: ...]; 向數組對象初始化賦值。這里可以寫任意對象的指針,結尾必須使用nil。
 
NSArray 不可變數組 常用方法
+(id)arrayWithObjects:obj1,obj2,...nil 創建一個新的數組,obj1,obj2......是他的元素對象,以nil對象結尾
-(BOOL)containsObject:obj 確定數組中是否包含對象obj
-(NSUInteger)count 返回數組元素個數
-(NSUInteger)indexOfObject:obj 第一個包含obj元素的索引號
-(id)objectAtIndex;i 返回存儲在位置 i 的對象
-(void)makeObjectsPerformSelector:(SEL)selector 將 selector 只是的消息發送給數組中的每個元素
-(NSArray*)sortedArrayUsingSelector:(SEL)selector 根據selector 指示的比較方法對數組進行排序
-(BOOL)writeToFile:path atomically:(BOOL)flag 將數組寫入指定的文件中,如果 flag 為 YES,則需要先創建一個臨時文件

 

 

 

 

 

   

可變數組對象: 

NSMutableArray 是 NSArray 補充類。NSMutalbeArray 創建的是動態數組,可隨意添加或刪除數組中的元素。也許你會看到 arrayWithCapacity 方法,這個數組容量僅僅是一個參考,不會真的限制數組的大小。 是為代碼優化而設計的。


[NSMutableArray arrayWithCapacity:10] :初始化可變數組對象的長度,如果后面代碼繼續添加數組超過長度10以后NSMutableArray的長度會自動擴充,所以不用擔心數組越界。
[array addObject:...] : 向可變數組尾部添加數據對象。
[array addObjectsFromArray:..] :向可變數組尾部添加一個數組對象。
 
NSMutableArray 常用方法總結
array 創建一個空數組
+(id)arrayWithCapacity:size 創建一個數組,指定容量為size
-(id)initWithCapacity:size 初始化一個新分配的數組,指定容量為size
-(void)addObject:obj 將對象obj添加到數組末尾
-(void)insertObject:obj atIndex:i 將對象 obj 插入到索引為 i 的位置
-(void)replaceObject:obj atIndex:i 將數組中索引為 i 處的元素用obj 置換
-(void)removeObject:obj 從數組中刪除所有是 obj 的對象
-(void)removeObjectAtIndex:i 從數組中刪除索引為 i 的對像
-(void)sortUsingSelector:(SEL)selector 用 selector 只是的比較方法將數組排序

 

 

在iOS 開發過程中, NSArray,NSMutableArray、NSDictionary、 NSMutableDictionary 經常被用到。這里先來介紹NSArray  與 NSMutableArray。 

首先,NSArray只能存儲Objective-C 對象,而不能存儲C語言中的基本數據類型,比如:int,flot,指針等。 在使用NSArray時,需特別注意,必須以nil 結尾。以此來代表結束。 舉例如下:

 NSArray 通過類方法 arrayWithObjects 創建一個新的NSArray。

NSArray * array= [ NSArray arraryWithObjects: @"one", @"two", @"three",nil  ] ;

為了查看array 的內容, 可通過NSLog方法,如下:

for(int i=0; i<[array count]; i++ )

{

NSLog (@"index %d has %@", i, [array objectAtIndex:i]);

}

從中可看出, NSArray 創建的是靜態數組,一旦創建之后,就再也不能添加和刪除數組中的對象了。

NSMutableArray 是 NSArray 補充類。NSMutalbeArray 創建的是動態數組,可隨意添加或刪除數組中的元素。

也行你會看到 arrayWithCapacity 方法,這個數組容量僅僅是一個參考,不會真的限制數組的大小。 是為代碼優化而設計的。

NSMutableArray 使用 addObject: 在末尾添加對象, 用 removeObjectAtIndex: 來刪除指定索引處的對象。對象刪除后,被刪除對象后面的數組元素被遷移,填補空缺。

這里需特別注意的是:NSArray 的初始化必須以 nil 結束。 如果忘記了,編譯器會報錯:Missing sentinel in method dispatch.

 另外還需注意,在字符串前加 @ ,這是 數組在 Objective-C  與 C 的區別。

 

如何訪問獲取 NSArray 中的對象呢?  通過 NSArray的 objectAtIndex: 方法。 改寫如下:    

NSArray 的初始化有 兩種方法: 

 (1) NSArray *array = [[NSArray alloc]initWithObjects: @"red", @"white",@"blue",nil];  // 不要忘記 最后補填 nil 

 (2) NSArray *array =@[@"red", @"white",@"blue"];    // 這種方法更為簡潔些

NSLog(@"array[0]=%@" , [array objectAtIndex:0]) ;

輸出結果是:array[0]=red

同理,通過 NSArray的 insertObjectAtIndex:可以很方便地將已有的對象插入數組中的指定位置。

 

小結:

NSArray 其實是很容易理解的。 從本質上講,NSArray 就是一個存放對象的容器。  NSArray 是靜態的對象數組,一旦創建后,就不能再添加和刪除對象。 如果你想添加或刪除,當然是有辦法的,而且還很簡單,那就是用 NSMutalbeArray 啊。

 

 

 

 


免責聲明!

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



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