iPhone CoreData – Как получить управляемые объекты и отсортировать их, игнорируя регистр?

StackOverflow https://stackoverflow.com/questions/2013158

Вопрос

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

Это было полезно?

Решение

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

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

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

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

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

Другие советы

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

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

Проверьте Руководство по программированию NSPredicate, но в основном используйте [c] для игнорирования регистра:

@"firstName BEGINSWITH[c] $FIRST_NAME"

Быстрая версия:

let sortDescriptor = NSSortDescriptor(key: "firstName", ascending: true, selector: #selector(NSString.localizedCaseInsensitiveCompare))
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top