2010-08-18 81 views
0

我最喜歡的論壇的成員,我堅持一個簡單的問題(粉筆,因爲我是相當新的事實)...如何根據數組中的對象數動態創建NSString對象?

我正在使用一個操作表。我不知道要顯示多少個按鈕,所以我決定將操作表委託設置爲使用字符串變量顯示總共四個按鈕,知道如果我只需要顯示2,就可以將第三個變量設置爲NIL並實現那個目標。

例子:

NSString *firstVehicle = [[NSString alloc] initWithString:[myVehicleList objectAtIndex:0]]; 
      NSString *secondVehicle = [[NSString alloc] initWithString:[myVehicleList objectAtIndex:1]]; 
      NSString *thirdVehicle = [[NSString alloc] initWithString:[myVehicleList objectAtIndex:2]]; 
      NSString *fourthVehicle = [[NSString alloc] initWithString:[myVehicleList objectAtIndex:3]]; 

      UIActionSheet *actionSheet = [[UIActionSheet alloc] initWithTitle:@"Please select a vehicle:" delegate:self cancelButtonTitle:@"Cancel" destructiveButtonTitle:nil otherButtonTitles:firstVehicle, secondVehicle, thirdVehicle, fourthVehicle, nil]; 
      NSLog(@"firstOtherButtonIndex in the List is %i", [actionSheet firstOtherButtonIndex]); 
      [actionSheet showInView:self.view]; 
      [actionSheet release]; 
      break; 

雖這麼說,我並不總是知道我將有四根弦創造...當我拉回myVehicleList陣列,我可以使用的計數方法來確定我有多少變數。

問題:那麼聰明的程序員究竟是如何解決這個問題的?意思是,如何循環訪問for語句,或許使用返回的計數來檢查數組,以僅建立一定數量的字符串並將下一個字符串設置爲零?

這有道理嗎?我可以做幾天的IF聲明,對。如果count = 4,則設置全部四個字符串。但是,如果count爲3,我將三個字符串設置爲數組對象值,第四個設置爲零。但是,如果計數爲2,則將兩個字符串設置爲數組對象值,將第三個字符串設置爲零,依此類推。

必須有一種更有效的方式來動態創建字符串?我想我可以使用快速枚舉,但我該如何動態地創建一個唯一的字符串對象...

我希望我能說得通。

謝謝!

回答

0
NSMutableArray *vehicles = [[NSMutableArray alloc] init]; 

[vehicles addObject:@"One"]; 
[vehicles addObject:@"Two"]; 
[vehicles addObject:@"Three"]; 
[vehicles addObject:@"..."]; 
[vehicles addObject:@"Ten"]; 

UIActionSheet *actionSheet = [[UIActionSheet alloc] initWithTitle:@"Please select a vehicle:" delegate:self cancelButtonTitle:@"Cancel" destructiveButtonTitle:nil otherButtonTitles:nil]; 
for (NSString *vehicle in vehicles) { 
    [actionSheet addButtonWithTitle:vehicle]; 
} 
[actionSheet showInView:self.view]; 
[actionSheet release]; 
+0

謝謝大家。這個網站非常好,謝謝你們的貢獻。上面的代碼以及人們大聲思考和解釋選項的反應確實有幫助。 – newDeveloper 2010-08-19 03:44:02

0

我寧願使用一個字符串數組。

0

你遇到的真正問題是沒有好的方法在動態數組和可變參數之間進行轉換(即可以將任意數量的變量作爲參數傳遞的參數)。如果你想這樣做循環的方式,仍然使用varargs參數,最好的辦法是創建一個像NSString *strings[4] = {nil}這樣的數組,通過它循環,然後通過strings[0], strings[1], strings[2], strings[3]作爲參數。

但我不會那樣做。它真的是管道膠帶。我將創建只有取消按鈕的工作表,然後循環通過您想用作標題和[sheet addButtonWithTitle:title]的字符串的NSArray。