我有2个数组。第一个是来自JSON提要的字典数组。第二个是我用来填充UITableView的值数组。
对于表中的每一行,我需要知道我写入表格单元格的值是否存在于任何字典的第一个数组中,因此我可以适当地设置附件类型。有没有一种简单的方法可以做到这一点,或者我最好先从每个字典创建另一个id值数组?
我希望这是有道理的,看不到任何其他方式来解释它; - )
答案 0 :(得分:2)
您可以将indexesOfObjectsPassingTest:
与在字典中搜索的块一起使用,但它不是最理想的:您将为每个单元格重复执行相同的搜索,这可能会降低您的应用速度,尤其是在用户快速滚动表格。获得Feed后立即使用项目创建NSSet
会更好,并在渲染表格单元格时重新使用它。
示例:强>
收到JSON Feed后构建NSSet *allIds
,如下所示:
allIds = [[NSMutableSet alloc] init]; // NSSet *allIds is declared
// in the same class as the array from which you get your table cells
[responseArray enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
[allIds addObjectsFromArray:[arrayOfDictsFromJsonFeed allKeys]];
}];
当您需要决定是否显示配件视图时,请执行以下操作:
if ([allIds containsObject:currentId]) {
// Add accessory view
}
答案 1 :(得分:0)
如果字典不存在,您应该将它们添加到字典中并链接到NSNull
对象,这样您就可以在需要显示单元格时进行检查。
这比检查每个卷轴要快得多