从循环中使用NSArray获取值
问题描述:
我已经创建了一个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];
}
任何帮助将不胜感激。
答
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]);
,完美的工作:)非常感谢你:P – HurkNburkS 2013-04-30 21:52:52
@HurkNburkS:这个循环可以浓缩为'INT I = [modifiedArray indexOfObject:cell.textLabel.text]' ,并且通过将'i'设置为NSNotFound来帮助指示是否找不到对象。 – Chuck 2013-04-30 22:12:39