我有一个IPhone应用程序,其中有NSMutableArray
个词典。选择表格的每一行时,我将使用
if (indexPath.row <[self.newmessagearrays count])
{
[messagearrays removeObjectAtIndex:indexPath.row];
}
我有一个场景,我想删除所有字典,其中我的“来自id”键是相同的,当点击该行时。我试过这样,但没有效果:
NSPredicate * pr = [NSPredicate predicateWithFormat:@"userid == %@",fromidstring];
[messagearrays filterUsingPredicate:pr];
答案 0 :(得分:4)
您可以使用NSPredicate
:
NSPredicate * pr = [NSPredicate predicateWithFormat:@"containsKey == SOME_KEY"];
[messageArrays filterUsingPredicate:pr];
<强>更新强>
回应编辑/澄清:
NSPredicate * pr = [NSPredicate predicateWithBlock:
^(id dictionary, NSDictionary * bindings) {
return (BOOL)![[dictionary objectForKey:@"fromid"] isEqual:@"190"];
}];
[messageArrays filterUsingPredicate:pr];
答案 1 :(得分:0)
数组将对象保存在某个索引处,字典保留对象和键 所以你的算法应该是这样的
使用循环逐个从数组中获取对象(字典),检查您的字典是否具有该特定键
如果是,请使用函数removeObjectAtIndex
答案 2 :(得分:0)
NSMutableIndexSet *discardedItems = [NSMutableIndexSet indexSet];
NSDictionary *item;
NSUInteger index = 0;
for (item in yourArrayOfNSDictionaries) {
if ([dictionary objectForKey:theKeyYouWantToCheckFor] != nil) [discardedItems addIndex:index];
index++;
}
[originalArrayOfItems removeObjectsAtIndexes:discardedItems];