Код по ссылке не отформатирован и его очень сложно прочитать.Однако я обнаружил одну серьезную проблему.
Этот предикат всегда будет неудачным:
predicate = [NSPredicate predicateWithFormat:
@"city == %@ and state == %@ and country == %@ and date==%@ and date==%@", city, state, country,startDate,endDate];
... если значения startDate и endDate не идентичны.Вы не можете проверить одно и то же имя ключа по двум разным значениям и ожидать, что оно пройдет.
Так как выборка возвращает только те объекты, которые передают предикат, предикат, который всегда терпит неудачу, всегда возвращает ноль объектов.
Поскольку вы, очевидно, используете предикат для поиска существующих объектов, которые уже содержат проанализированные данные, всегда предикат, который не работает, означает, что ваш код всегда думает, что ему нужно создать новый управляемый объект.Вот почему ваш объектный граф заполняется объектами с дублирующимися значениями.