それでNSArray
、何百ものNSDictionary
オブジェクトが取り込まれたとします。
すべてのディクショナリ オブジェクトにはキーの値がありますname
が、これらの値の名前は、異なるオブジェクトに複数回表示される場合があります。
この NSArray をフィルタリングして、一意のname
属性ごとに 1 つのオブジェクトのみを返すことができるようにする必要があります (オブジェクトの最初か最後かは関係ありません)。
これは私が得た距離ですが、明らかに私のfiltered
配列には、一意のオブジェクトだけではなく、すべてのオブジェクトが含まれています。
結果を1つ/最初の一致のみに制限するように述語に指示する方法が必要だと思いますか?
NSArray *allObjects = ... // This is my array of NSDictionaries
NSArray *uniqueNames = [allObjects valueForKeyPath:@"@distinctUnionOfObjects.name"];
NSArray *filtered = [allObjects filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"(self.name IN %@)", uniqueNames]];
ありがとう!