使用for循环从NSArray获取值

时间:2013-04-30 21:38:25

标签: ios objective-c for-loop nsarray nsdictionary

我已经创建了一个NSStrings数组,它结合了另一个原始NSArray的NSDictionary的两个元素,我已经在UITableView中进行了显示/排序。

然后使用原始NSArray,当用户触摸一个单元格并启动didSelectCellAtIndexPath函数时,我想将cell.textLabel.text与修改后的NSArray中的NSString进行比较,然后使用数组计数器我想分配NSDictionary原始Array到singleEntryArray。

我已经尝试了自己,但我一直将null返回到NSDictionary,但我不确定原因。

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

非常感谢任何帮助。

1 个答案:

答案 0 :(得分: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]);