2013-04-30 65 views
1

我已經創建了一個NSString數組,這個NSStrings組合了另一個原始NSArray的NSDictionary的兩個元素,我已經在UITableView中進行了顯示/排序。從循環中使用NSArray獲取值

然後用原始的NSArray,當用戶觸摸一個單元格並啓動didSelectCellAtIndexPath函數時,我想將cell.textLabel.text比較爲修改後的NSArray中的NSString,然後使用數組計數器我想分配將原始數組的NSDictionary轉換爲singleEntryArray。

我已經嘗試過自己,但我不斷收到null返回到NSDictionary,但我不知道爲什麼。

for (int i=0; [[modifiedArray objectAtIndex:i] isEqualToString:cell.textLabel.text]; i++) { 
       singleEntryArray = [originalArray objectAtIndex:i]; 
      } 

任何幫助將不勝感激。

回答

5

for中的謂詞必須爲真才能繼續。例如,通常爲:

for (i = 0; i < 10; i++) ... 

你的情況,你可能不會得到真正的第一次迭代,從而singleEntryArray尚未分配。

嘗試這樣的:

int i = 0; 
    for (NSString *obj in modifiedArray) 
    if ([obj isEqualToString: cell.textLabel.text]) 
     break; 
    else 
     i++; 
    /* Value of 'i' is index into array. Caution if not found! */ 
    singleEntryArray = [originalArray objectAtIndex: i]; 

[編輯]作爲@chuck指出。以上是更方便地表示爲

int i = [modifiedArray indexOfObject: cell.textLabel.text]; 
singleEntryArray = (i == NSNotFound ? NULL : [originalArray objectAtIndex: i]); 
+0

,完美的工作:)非常感謝你:P – HurkNburkS 2013-04-30 21:52:52

+3

@HurkNburkS:這個循環可以濃縮爲'INT I = [modifiedArray indexOfObject:cell.textLabel.text]' ,並且通過將'i'設置爲NSNotFound來幫助指示是否找不到對象。 – Chuck 2013-04-30 22:12:39