2011-05-04 53 views
1

例如,我有@"John", @"Peter", ..., @"May",需要構建NSArray如何創建未知NSStrings的NSArray?

[@"John", @"Peter", ..., @"May"] 

NSString數量是未知的,是從導入文本文件服用。由於NSArray不支持追加新元素,所以我如何創建NSArray

謝謝

更新,讓我換個問題。如何創建跟隨函數調用所需的動態數組參數?

[segmentedAttributes attributesWithTitlesArray:[NSArray arrayWithObjects:@"John", @"Peter", @"May", nil]] 
+3

冒着聽起來像n00b的風險,'nil'的目的/需要是什麼? – dredful 2011-05-04 04:09:53

+1

NSArrays不能包含零。你可以使用NSNull,但爲什麼你需要它終止? – ughoavgfhw 2011-05-04 04:10:19

+0

請參閱更新關於爲什麼。看起來我的問題是錯的:-(實際上並不需要零。 – ohho 2011-05-04 04:19:39

回答

5

你別。

您誤解了圖書館的行爲。

的確,有一種便捷構造arrayWithObjects:其因此用於:

NSArray* array=[NSArray arrayWithObjects:@"Low", @"Medium", @"High", nil]; 

但這創建在端部與nil陣列。這nil只是表示可變長度參數列表的末尾。它只是創建了包含三個元素的NSArray,而不是最後一個nil

您只需要創建一個NSArray包含所需的元素,並將其傳遞給庫函數。例如:

NSMutableArray*array=[NSMutableArray array]; 
while(...){ 
    ... get a string ... 
    [array addObject: string]; 
} 

SCSegmentedAttributes*attributes=[SCSegmentedAttributes attributesWithSegmentTitlesArray:array]; 

應該工作,而無需添加nil[NSNull null]

+0

我原來的問題是錯的,謝謝指出。 – ohho 2011-05-04 04:24:47

0

您不能將nil存儲在Foundation集合類中。相反,您可以使用[NSNull null]。使用NSMutableArray,然後當您想要添加'無'對象時,請使用[NSNull null]

注意,當你想看看一個對象是[NSNull null]以後,該方法將每次返回同一個實例,這樣你就可以直接做點相等測試,像這樣:

for (id anObject in myArray) { 
    if (anObject == [NSNull null]) { 
     NSLog(@"object is nil"); 
    } 
    else { 
     NSLog(@"object is not nil: %@", anObject); 
    } 
} 
0

創建可變數組就用

NSString *myString = [NSString stringWithFormat:@"ur new string"]; 

[myArray addObject:myString]; 

你必須添加在可變數組新赤貧當對象類型添加到陣列。

希望這會有幫助