2013-04-30 64 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