iPhone CoreData - Как получить управляемые объекты и отсортировать их без учета регистра? - PullRequest
31 голосов
/ 06 января 2010

Кто-нибудь знает, как получить некоторые результаты, сортируя их по алфавиту, но игнорируя регистр?

Ответы [ 4 ]

78 голосов
/ 07 января 2010

Спасибо за ваш ответ, но мне нужно отсортировать результат простого случая игнорирования запроса. Ваше предложение относится к поиску и сравнению.

Говоря SQL, мне нужно ORDER BY firstName ASC, и эта команда должна быть без учета регистра для моего использования.

Я немного погуглил и закончил читать справку NSSortDescriptor Class , и я смог найти ответ на свой вопрос. Решением является установка селектора на дескриптор сортировки следующим образом:

NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"firstName" ascending:YES selector:@selector(caseInsensitiveCompare:)];

Надеюсь, это будет полезно для большего количества людей.

10 голосов
/ 18 сентября 2012

Если приложение локализовано на нескольких языках, рассмотрите возможность использования селектора localizedCaseInsensitiveCompare: вместо caseInsensitiveCompare. Это приведет к тому, что буква 'é' не станет после буквы 'e'.

NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"firstName" ascending:YES selector:@selector(localizedCaseInsensitiveCompare:)];
5 голосов
/ 06 января 2010

Ознакомьтесь с руководством по программированию NSPredicate , но в основном используйте [c], чтобы игнорировать регистр:

@"firstName BEGINSWITH[c] $FIRST_NAME"
4 голосов
/ 08 марта 2017

Swift Версия:

let sortDescriptor = NSSortDescriptor(key: "firstName", ascending: true, selector: #selector(NSString.localizedCaseInsensitiveCompare))
...