我有一个字典数组,其中包含相同的键但值不同。 我有另一个字典,我想检查该字典是否存在于该数组中...... ???
答案 0 :(得分:1)
假设你的sesond字典key1,key2,key3中有三个键,以便在你的数组中验证字典的存在使用'NSPredicate`类这样 假设您的数组是_myDicArray而其他字典是_refDic
NSPredicate* myPredicate =[NSPredicate predicateWithFormat:@"key1 like %@ AND key2 like %@ AND key3 like %@",[_refDic objectForKey:@"key1"],[_refDic objectForKey:@"key2"],[_refDic objectForKey:@"key3"]];
NSArray* someOtherArr = [[_myDicArray filteredArrayUsingPredicate:filmPredicate] objectAtIndex:0];
if([someOtherArr count] > 0)
//this is what you wanted ... this array has ur dic
我认为这也应该有用
NSPredicate* myPredicate =[NSPredicate predicateWithFormat:@"self == %@",_refDic];
NSArray* someOtherArr = [[_myDicArray filteredArrayUsingPredicate:filmPredicate] objectAtIndex:0];
if([someOtherArr count] > 0)
//this is what you wanted ... this array has ur dic
答案 1 :(得分:1)
好吧,我会这样实现它。
创建NSDictionary的子类并实现这些方法:
- (BOOL)isEqual:(id)object;
- (NSUInteger)hash;
正确实现哈希非常重要。它应该为不同的字典返回不同的值,即使它们根据您的定义相等。在isEqual中,您可以检查两个字典是否包含相同的键和相同的值。如果是,则返回YES,否则返回NO。
有了这个,您的支票后面只有一行:[arrayOfDictionaries containsObject:dictionaryIAmLookingFor];
如果实现不正确的哈希或跳过实现它,containsObject将不会对数组中的所有对象执行isEqual。