1

それで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]];

ありがとう!

4

1 に答える 1