Кто-нибудь знает, как получить некоторые результаты, сортируя их по алфавиту, но игнорируя случай?
IPhone CoreData - Как получать управляемые объекты и сортировать их, игнорируя регистр?
Ответ 1
Спасибо за ваш ответ, но мне нужно отсортировать результат простого "запроса", игнорирующего случай. Ваше предложение применяется для поиска и сравнения.
Говоря SQL, мне нужен ORDER BY firstName ASC
, и эта команда должна быть нечувствительна к регистру для моего использования.
Я сделал некоторый Googling, и я закончил читать Ссылка на класс NSSortDescriptor, и я мог найти ответ на мой вопрос. Решение устанавливает селектор дескриптора сортировки следующим образом:
NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"firstName" ascending:YES selector:@selector(caseInsensitiveCompare:)];
Я надеюсь, что это будет полезно для большего количества людей.
Ответ 2
Если приложение локализовано на нескольких языках, рассмотрите возможность использования селектора localizedCaseInsensitiveCompare:
вместо caseInsensitiveCompare
. Это приведет к тому, что буквой "é" станет буква "e".
NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"firstName" ascending:YES selector:@selector(localizedCaseInsensitiveCompare:)];
Ответ 3
Просмотрите руководство по программированию NSPredicate, но в основном используйте [c] для игнорирования случая:
@"firstName BEGINSWITH[c] $FIRST_NAME"
Ответ 4
Быстрая версия:
let sortDescriptor = NSSortDescriptor(key: "firstName", ascending: true, selector: #selector(NSString.localizedCaseInsensitiveCompare))