2016-02-02 4 views
4

Следующий код не работает:Case Нечувствительность Сравнение с Core Data и Swift

let sortDescriptor = NSSortDescriptor(key: "name", ascending: true, selector:"caseInsensitiveCompare") 

И дает следующее сообщение об ошибке: 'NSInvalidArgumentException', причина: 'неподдерживаемый селектор NSSortDescriptor: caseInsensitiveCompare'

Казалось, что он отлично работает в Objective-C. Любые идеи о том, почему это может быть?

Редактировать: похоже, это может быть невозможно с помощью Core Data/SQLite. В этом случае лучше всего получить массив и отсортировать его в коде позже?

ответ

6

Селектор caseInsensitiveCompare: с двоеточием, и вы можете использовать его с основными данными.

Двоеточие есть, потому что метод (который является методом экземпляра NSString) принимает один аргумент (строка для сравнения).

В списке сортировки селекторов, которые могут быть использованы с Core Data и в магазине SQLite можно найти в Persistent Store Types and Behaviors в Руководство по программированию Core Data.

+0

Это сработало. Благодаря! –

25
let sortDescriptor = NSSortDescriptor(key: "KeyName", ascending: true, selector: #selector(NSString.caseInsensitiveCompare)) 
+2

Этот синтаксис требуется Swift 3. – Matt