2017-08-03 6 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

あなたがキーに興味を持っていませんが、単にオブジェクトならば、それはかなり単純です:Safariで型付き

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

-allValuesは、すべての値オブジェクトの配列を返します。 -filteredArrayUsingPredicate:は、これを述語を満たす項目に減らします。

+0

'[contentDictionary allObjects]'はありません。 'allObjects'ではなく' allValues'を使用できますか? – isuru

+0

申し訳ありませんが、もちろんです。 –

+0

はい、これは本当に最適なソリューションです。私のケースでは、 'predicateWithFormat:@" isFree ==%@ "、@" YES "'です。 – isuru

関連する問題