Я знаю, что это старый вопрос, но есть и другая возможность, в зависимости от того, что вам нужно.
Apple предоставляет способ сделать это - Операторы сбора ключей-значений .
Операторы объектов позволяют вам работать с коллекцией. В этом случае вы хотите:
@ distinctUnionOfObjects
Оператор @distinctUnionOfObjects возвращает массив, содержащий отдельные объекты в свойстве, указанном путем к ключу справа от оператора.
NSArray *distinctArray = [arrayWithDuplicates
valueForKeyPath:@"@distinctUnionOfObjects.name"];
В вашем случае, однако, вы хотите весь объект. Так что вам нужно сделать в два раза:
1) Используйте @distinctUnionOfArrays
вместо. Например. Если у вас были эти пользовательские объекты из других коллекций, используйте @distinctUnionOfArray.myCollectionOfObjects
2) Реализовать isEqual:
для этих объектов, чтобы они возвращались, если их .name равны