1

我制作了一个 NSStrings 数组,它结合了我从另一个原始 NSArray 中获得的 NSDictionary 的两个元素,我这样做是为了在 UITableView 中显示/排序。

然后使用原始的 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];
            }

任何帮助将不胜感激。

4

1 回答 1

6

中的谓词for需要为真才能继续。例如,通常:

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

在您的情况下,您可能在第一次迭代中没有得到 true ,因此 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]);
于 2013-04-30T21:46:25.653 回答