Сортировка NSSet NSManagedObjects по NSDate приводит к ошибке - PullRequest
0 голосов
/ 09 августа 2011

Я пытаюсь получить RSS-ленту и отсортировать по pubDate. Когда я проверяю «обновленное» свойство, большую часть времени оно корректно и дает мне правильную дату, но когда я пытаюсь преобразовать набор в отсортированный массив, я получаю случайные результаты из сортировки. Я связал это с тем фактом, что когда сортировка выполняет сравнение, свойство (которое является NSDate, см. Рисунок 1) входит и сравнивается как __nscfnumber! (также рисунок2)

Любая помощь или идея будет высоко ценится.

Figure1

figure1

Figure2

figure2

1 Ответ

0 голосов
/ 09 августа 2011

Я полагаю, блок компаратора только для диагностических целей? На самом деле вам не нужно предоставлять компаратор для NSDate или любого из предоставленных классов типов атрибутов.

Если отладчик сообщает, что объект date1 относится к типу класса NSNumber-cluster, то где-то экземпляр NSCFNumber назначается атрибуту updated. Отладчик игнорирует такие факторы, как приведение, и вместо этого просто спрашивает объект, каков его класс. Если объект говорит, что это NSCFNumber, то это так, независимо от того, как код обрабатывает это иначе.

Почему это происходит, я не могу сказать на основании предоставленного кода.

Вы можете попробовать записать значение и класс атрибута updated, прежде чем пытаться выполнить сортировку, чтобы проверить, правильно ли он сообщает. Я также рекомендовал бы разложить всю строку. Разумеется, вложенность всех этих вызовов методов будет работать, но она подвержена ошибкам и ее трудно отладить.

...