Does anyone know how to fetch some results sorting them alphabetically but ignoring case?
Thank you for your reply, but I need to sort the result of a simple "query" ignoring case. Your suggestion applies for searching and comparing.
SQL speaking, I need an ORDER BY firstName ASC
, and this command must be case insensitive for my usage.
I have done some Googling and I ended reading the NSSortDescriptor Class reference, and I could find the answer for my question. The solution is setting a selector to the sort descriptor as follow:
NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"firstName" ascending:YES selector:@selector(caseInsensitiveCompare:)];
I hope it will be useful for more people.
COLLATE NSCollateNoCase
, or COLLATE NSCollateLocaleSensitiveNoCase
for localizedCaseInsensitiveCompare:
, after ORDER BY
. Tested on simulator with iOS 6, and device with iOS 7. –
Aversion [NSSortDescriptor(key: "string", ascending: true, selector: #selector(NSString.caseInsensitiveCompare(_:)))]
–
Teleprinter If the app is localized in several languages, please consider using the localizedCaseInsensitiveCompare:
selector instead of caseInsensitiveCompare
. It will have the effect to avoid the letter 'é' to be after the letter 'e'.
NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"firstName" ascending:YES selector:@selector(localizedCaseInsensitiveCompare:)];
Check out the NSPredicate programming guide, but basically use [c] to ignore case:
@"firstName BEGINSWITH[c] $FIRST_NAME"
Swift Version:
let sortDescriptor = NSSortDescriptor(key: "firstName", ascending: true, selector: #selector(NSString.localizedCaseInsensitiveCompare))
© 2022 - 2024 — McMap. All rights reserved.