我有NSDictionary
,其中包含以下类型的对象。
OBJECT1 - isFree:NO
Name: Papaya
OBJECT2 - isFree:YES
Name: Apple
OBJECT3 - isFree:YES
Name: Grapes
我可以使用key
获取给定objectForKey
的对象,如下所示。
NSString* contentId = @"OBJECT3";
ACBContentType *object = [[[ACBLibrary sharedLibrary] contentsDictionary] objectForKey:contentId];
但是我希望通过读取对象isFree:YES
属性来获取isFree
的所有对象。这样做的最佳方式是什么?
答案 0 :(得分:4)
如果您对密钥不感兴趣,而只对对象感兴趣,那很简单:
NSDictionary *contentDictionary = …;
NSPredicate *freePredicate = [NSPredicate predicateWithFormat:@"isFree == %@", @YES];
NSArray* freeContent = [[contentDictionary allValues] filteredArrayUsingPredicate:freePredicate];
输入Safari。
-allValues
返回所有值对象的数组。 -filteredArrayUsingPredicate:
将此缩减为满足谓词的项目。