Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

iPhone CoreData - How to fetch managed objects, and sorting them ignoring case?

Does anyone know how to fetch some results sorting them alphabetically but ignoring case?

like image 592
vfn Avatar asked Jan 06 '10 13:01

vfn


2 Answers

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.

like image 128
vfn Avatar answered Sep 20 '22 23:09

vfn


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:)]; 
like image 43
MonsieurDart Avatar answered Sep 19 '22 23:09

MonsieurDart