NSDictionary按属性值获取对象

时间:2017-08-03 07:28:47

标签: ios objective-c

我有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的所有对象。这样做的最佳方式是什么?

1 个答案:

答案 0 :(得分:4)

如果您对密钥不感兴趣,而只对对象感兴趣,那很简单:

NSDictionary *contentDictionary = …;
NSPredicate *freePredicate = [NSPredicate predicateWithFormat:@"isFree == %@", @YES];
NSArray* freeContent = [[contentDictionary allValues] filteredArrayUsingPredicate:freePredicate];

输入Safari。

-allValues返回所有值对象的数组。 -filteredArrayUsingPredicate:将此缩减为满足谓词的项目。