2015-11-24 1 views
0

Я использую дескриптор сортировки для сортировки массива NSManagedObject (CoreData).NSSortDescriptor и [__NSCFNumber localizedStandardCompare:]: непризнанный селектор, отправленный экземпляру

У меня есть два дескриптора сортировки для значения Int16 (добавлено второе сегодня).

По какой-то причине, при попытке отсортировать мой массив с добавленным дескриптором, он падает с:

Я даже пытался изменить модель данных (добавить атрибут в Int16 и заполнить его), но приложение падает каждый раз, когда я пытаюсь использовать вновь добавленный дескриптор.

Дескриптор очень прост: пусть sortDescriptor4 = NSSortDescriptor (ключ: "the_int16_property", восходящие: ложь, селектор: "localizedStandardCompare:")

Я в недоумении. Любые советы будут полезны.

Спасибо!

ответ

1

localizedStandardCompare: - это метод от NSString до «сравнить строки, отсортированные по Finder».

Key-Value Coding для численных свойств ядра данных (например, "Int 16") использует NSNumber экземпляров, и этот класс не отвечает на localizedStandardCompare:.

Просто используйте по умолчанию compare: селектор:

NSSortDescriptor(key: "the_int16_property", ascending: false, selector: "compare:") 
// Swift 2.2 or later: 
NSSortDescriptor(key: "the_int16_property", ascending: false, selector: #selector(NSNumber.compare(_:))) 

или просто

NSSortDescriptor(key: "the_int16_property", ascending: false) 
+0

Спасибо! На самом деле это была ошибка копирования. Даже не заметил! – goggelj

 Смежные вопросы

  • Нет связанных вопросов^_^