0

У меня есть NSManagedObject подкласс, который реализует сообщение compare:. Я хочу получить эти объекты и отсортировать их, используя этот метод сравнения, но, видимо, я должен предоставить key для NSSortDescriptor.Сортировка результатов NSFetchRequest объектов, которые реализуют сравнение:

Я не хочу предлагать key, так как сам объект уже знает, как себя сравнивать.

Если я обеспечиваю ноль в качестве ключа для ключа:

r.sortDescriptors = @[[NSSortDescriptor sortDescriptorWithKey:nil 
                 ascending:YES              selector:@selector(compare:)]]; 

я получаю следующее сообщение об ошибке:

failed: ((62) equal to ([[self.lib tags] count])) failed: throwing "keypath #self not found in entity "

Как я могу убедиться, что NSSortDescriptor игнорирует любые key и просто использует compare: вместо ?

ответ

2

Проблема была в том, что я использовал хранилище SQLite, и вы можете использовать только смоделированные свойства в NSFetchRequest, который основан на хранилище SQLite.

Это было очень запутанно, так как оно работало на моих тестах (я использовал магазин In Memory) и с ужасом потерпел неудачу в самом приложении. Лучшее описание ошибки могло бы сэкономить много времени.

+1

Вы должны принять свой собственный ответ :-). – Mundi

2

Вы пытались поставить ключ @"self"?

+0

Первое, что я пробовал, все та же ошибка .... :-( – cfischer