标题有点令人困惑......我会解释
我有NSMutableArray
我填充了NSMutableDictionary
个对象。我想要做的是在将字典对象添加到数组之前,我需要检查是否有任何字典包含的值等于已经设置的id。
示例:
步骤1:单击一个按钮,设置对象的id以用于建立视图。
步骤2:在所述视图内按下另一个按钮以将其一些内容保存到字典中,然后将所述字典添加到数组中。但是,如果已建立的ID已作为其中一个词典键的值存在,请不要插入此词典。
以下是我目前无法使用的一些代码:
-(IBAction)addToFavorites:(id)sender{
NSMutableDictionary *fav = [[NSMutableDictionary alloc] init];
[fav setObject:[NSNumber numberWithInt:anObject.anId] forKey:@"id"];
[fav setObject:@"w" forKey:@"cat"];
if ([dataManager.anArray count]==0) { //Nothing exists, so just add it
[dataManager.anArray addObject:fav];
}else {
for (int i=0; i<[dataManager.anArray count]; i++) {
if (![[[dataManager.anArray objectAtIndex:i] objectForKey:@"id"] isEqualToNumber:[NSNumber numberWithInt:anObject.anId]]) {
[dataManager.anArray addObject:fav];
}
}
}
[fav release];
}
答案 0 :(得分:6)
进行此类检查的一种相当简单的方法是使用NSPredicate过滤数组。如果没有匹配,则过滤结果将为空数组。例如:
NSArray *objs = [dataManager anArray];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"id == %@", [NSNumber numberWithInt:i]];
NSArray *matchingObjs = [objs filteredArrayUsingPredicate:predicate];
if ([matchingObjs count] == 0)
{
NSLog(@"No match");
}