Objective-C的Foundation框架——集合NSArray

0x01 NSArray

 

NSArray是一個Cocoa類,用來存儲對象的有序列表。

 

NSArray可存儲的對象

在NSArray中可以放入任意類型的對象:NSString、Car、Shape、Tire或者其他想要存儲的對象,甚至可以是其他數組或字典對象。

 

NSArray類的限制

NSArray類有三個限制:

1、一旦創建了一個包含特定數量對象的數組,它就不能增加或刪除任何元素。但數組中的對象可以改變;

2、只能存儲Objective-C的對象,不能存儲原始C語言的基礎數據類型(int、float、enum、struct)和NSArray中的隨機指針;

3、不能在NSArray中存儲nil(對象的零值或NULL值)。

 

NSArray的創建

可以通過類方法arrayWithObjects:創建一個新的NSArray。發送一個以逗號分隔的對象列表,在列表結尾處添加nil代表列表結束:

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

也可以用數組字面量格式來創建一個數組,此時不必在列表結尾添加nil

NSArray *array2 = @[@"one", @"two", @"three"];

 

NSArray可用的對象方法

count

count:方法可以獲得一個NSArray所包含的對象個數。

- (NSUInteger)count;

 

objectAtIndex

objectAtIndex:可以獲得一個NSArray特定索引處的對象。

也可以通過數組字面量來訪問NSArray,和C語言中訪問數組項的語法類似。

- (id)objectAtIndex:(NSUInteger)index;
id *myObject = array1[1];

 

數組內容的輸出

結合計數和取值的方法, 可以輸出NSArray中的內容,當然也可以用數組字面量的語法來寫代碼:

for (NSInteger i = 0; i < [array count]; i++)
{
     NSLog (@"index %d has %@.",i, [array objectAtIndex:i]);
     //Equal to : NSLog (@"index %d has %@.",i, array[i]);
}

##
#Output:
#index 0 has one.
#index 1 has two.
#index 2 has three.
##

 

數組的拆分與合併方法

componentsSeparatedByString

使用componentsSeparatedByString:方法可以切分在指定位置切分NSString並分段存入NSArray。

NSString *string = @"oop:ack:bork:greeble:ponies";
NSArray *chunks = [string componentsSeparatedByString: @":"];

 

componentsJoinedByString

使用componentsJoinedByString:方法可以將NSArray中的元素合併成NSString。

string = [chunks componentsJoinedByString: @" :- ) "];

 

0x02 可變數組

arrayWithCapacity

NSMutableArray通過類方法arrayWithCapacity來創建新的可變數組。參數numItems是數組容量,這個容量只是給編譯器一個建議值,Cocoa不會用該數值來限制數組的大小:

+ (id) arrayWithCapacity: (NSUInteger) numItems;

//示例
NSMutableArray *array = [NSMutableArray arrayWithCapacity: 17];

 

addObject

使用addObject:方法可以在可變數組末尾添加對象。

- (void) addObject: (id) anObject;

//示例
for (NSInteger i = 0; i < 4; i++)
{
 Tire *tire = [Tire new];
 [array addObject: tire];
}

 

1、NSArray的索引是從0開始的,這個和C語言數組是一樣的。

2、沒有數組字面量語法可以用來創建NSMutableArray對象!

 

 

發佈了67 篇原創文章 · 獲贊 28 · 訪問量 7萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章