Сокращение массива объектов до уникальных объектов на основе атрибутов - PullRequest
0 голосов
/ 31 августа 2010

Хорошо.

У меня есть массив с несколькими объектами, заполненными моим основным стеком данных. , Допустим, с каждым объектом связаны атрибуты имени, начальной даты, конечной даты и суммы

Что мне нужно сделать, так это уменьшить этот массив до уникальных объектов (не только значений) на основе имени, которое является строкой NSString.

Я пробовал методы isEqual внутри для циклов, в то время как циклы и использование множеств, и я не могу понять это.

Есть идеи?


ОБНОВЛЕНИЕ: Я должен быть более ясным. По сути, я хочу взять существующий массив и удалить дублирующиеся объекты с одинаковыми значениями атрибута и получить массив уникальных объектов.

Ответы [ 4 ]

0 голосов
/ 08 декабря 2011

Если вы собираетесь ответить на свой вопрос, хотя бы отправьте код, чтобы помочь другим с такой же проблемой. это может быть решение, которое работает и для них. Если вы просите других опубликовать код и / или помочь вам, поймите, что это улица с двусторонним движением

0 голосов
/ 01 сентября 2010

Nevermind. Я понял это, используя сумасшедшие группы выражений if, возможно, это не самый эффективный способ сделать это, но он собрал нужные мне результаты.

0 голосов
/ 01 сентября 2010
  1. Получить объекты в NSArray.
  2. Создать NSMutableDictionary.
  3. Итерация по массиву.
  4. Проверьте, есть ли атрибут, используемый в качестве ключа в словаре, уже на месте, если это так continue.
  5. Если нет, добавьте его в словарь
  6. Как только цикл завершится, вызовите -allValues в словаре.

Теперь у вас есть массив объектов, уникальных для этого атрибута.

0 голосов
/ 31 августа 2010
  1. сделать выборку всех ваших объектов без предиката - результат - массив, который может содержать кратные числа с одинаковой строкой имени
  2. перебирать массив, создавая новый массив строк (скопируйте имястрока каждой сущности)
  3. конвертирует этот массив в набор - по определению он содержит только уникальные имена
  4. обращается к вашим основным сущностям данных, как требуется, делая выборку с предикатом "name =% @"для любого имени в наборе (или превратить набор обратно в массив для простоты использования).
...