【问题标题】:get value from NSArray using for loop使用 for 循环从 NSArray 获取值
【发布时间】:2013-04-24 22:25:22
【问题描述】:

我制作了一个 NSString 数组,它结合了我从另一个原始 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];
            }

任何帮助将不胜感激。

【问题讨论】:

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


    【解决方案1】:

    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]);
    

    【讨论】:

    • @HurkNburkS:该循环可以压缩为int i = [modifiedArray indexOfObject:cell.textLabel.text];,通过将i设置为NSNotFound,它将有助于指示是否找不到对象。
    猜你喜欢
    • 1970-01-01
    • 2013-09-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多