1

我有一个 iPhone 应用程序,其中有一个NSMutableArray字典。选择表格的每一行时,我正在使用删除字典

if (indexPath.row <[self.newmessagearrays count])
{
     [messagearrays removeObjectAtIndex:indexPath.row];
}

我有一个场景,当点击该行时,我想删除我的“from id”键相同的所有字典。我试过这样,但没有效果:

 NSPredicate * pr = [NSPredicate predicateWithFormat:@"userid == %@",fromidstring];
[messagearrays filterUsingPredicate:pr];
4

3 回答 3

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];
于 2013-02-27T07:58:08.257 回答
0

数组将对象保存在某个索引处,字典保存对象和键,因此您的算法应该是这样的

使用循环从数组中一一获取对象(字典),检查您的字典是否具有该特定键。
如果是,则使用函数从数组中删除该对象removeObjectAtIndex

于 2013-02-27T07:47:08.137 回答
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];
于 2013-02-27T07:51:23.180 回答