У меня есть следующая проблема, и я не могу понять, как ее решить. У меня есть NSSet, который содержит объекты Person (NSDictionary с 2 ключами: имя, возраст). Время от времени я получаю объекты NSArray of Person, и я хочу добавить их в свой NSSet, но я хочу отфильтровать дубликаты. Я думаю, что могу использовать NSPredicates, но я читаю документацию, и я не могу понять, как мне отформатировать мой NSPredicate, чтобы отфильтровать содержимое моего массива на основе того, что у меня уже есть в NSSet.NSPredicates с пользовательскими объектами
Итак, у меня есть NSSet с 5 пользовательскими объектами, и я получаю NSArray с 6 объектами, но 3 из них уже существуют в NSSet, и я хочу их отфильтровать. Я понимаю, что я должен делать с основными объектами, такими как строки, целые числа и т. Д., Но я не знаю, как это расширить, чтобы работать с настраиваемыми более сложными объектами.
Надеюсь, я был достаточно ясен с моей проблемой. Любая стартовая точка, пример или совет очень ценятся.
Спасибо!
Да, вы правы, это должно произойти, но это не так. Я исследовал проблему немного больше. У меня есть мой NSSet, и пусть 5 целых чисел {0, 1, 2, 3, 4, 5}, если я попытаюсь добавить NSArray размером 5 {1, 0, 3, 2, 5, 4}, он добавит его к NSSet, хотя это одно и то же, но в другом порядке. Я протестировал мой вызов isEqual, и он работает правильно. У вас есть идеи, почему я получаю такое поведение? –
Добавьте каждый элемент в массив. Поскольку NSSet работает с объектами, он просто добавляет ссылку на ваш массив в набор. –
Я нашел настоящую проблему. Я не переопределял хэш-метод, и методы NSSets также используют хэш-код объекта для оценки объектов. Итак, теперь я должен выяснить способ создания равных хеш-кодов для равных объектов. Я отправлю позже решение. –