2017-08-03 248 views
1

我有NSDictionary它包含以下類型的對象。NSDictionary通過屬性值獲取對象

OBJECT1 - isFree:NO 
      Name: Papaya 

OBJECT2 - isFree:YES 
      Name: Apple 

OBJECT3 - isFree:YES 
      Name: Grapes 

我可以用objectForKey如下獲取給定key對象。

NSString* contentId = @"OBJECT3"; 
ACBContentType *object = [[[ACBLibrary sharedLibrary] contentsDictionary] objectForKey:contentId]; 

但是我想通過閱讀對象isFree屬性來獲取所有對象這isFree:YES。做這個的最好方式是什麼?

回答

4

如果你不感興趣的按鍵,而是完全的對象,這是很簡單的:

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

鍵入Safari瀏覽器。

-allValues返回所有值對象的數組。 -filteredArrayUsingPredicate:將此減少爲滿足謂詞的項目。

+0

沒有'[contentDictionary allObjects]'。我們可以使用'allValues'而不是'allObjects'。 – isuru

+0

對不起,當然是。 –

+0

是的,這是真正的最佳解決方案,在我的例子中'predicateWithFormat:@「isFree ==%@」,@「YES」'。 – isuru