Problem z NSSortDescriptor
Tworzę aplikację książki kontaktowej, w której pobieram nazwy z książki adresowej i zapisuję je w danych podstawowych i wyświetlaję nazwy na stole za pomocąNSFetchedResultsController.However
pierwszy indeks i sekcja, która się pojawi, to #, a po nich alfabety. Ale chcę to zrobić jak w natywnej aplikacji kontaktowej, tzn. # Indeks powinien wreszcie nadejść.
Użyłem następującychNSortDescriptor
:
sortDescriptor = [[NSSortDescriptor alloc] initWithKey: @ "fullName" rosnąco: YES];
tutaj „fullName” tokey
w podstawowych danych, które są tworzone przez połączenie imienia i nazwiska. Identyfikator sekcji to pierwsza litera „fullName”, jeślifullName
nie zaczyna się od alfabetu, jego identyfikator sekcji to #.
Szukałem go i użyłemNSDiacriticInsensitiveSearch
wNSortDescriptor
komparator, ale to nie zadziałało. Jeśli ktoś ma jakiś pomysł, daj mi znać.
Oto mój kod:
NSString *special = @"\uE000";
if ([[self sectionName:contactName] isEqualToString:@"#"]) {
sortName = [special stringByAppendingString:contactName];
}
else{
sortName = contactName;
}
[newContact setValue:[self sectionIdentifier:sortName] forKey:@"sectionIdentifier"];
[newContact setValue:sortName forKey:@"sortName"];
A oto deskryptor sortowania:
sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"sortName" ascending:YES];
[self sectionIdentifier:sortName]
ta metoda zwraca # jeśli sortName zaczyna się od alfabetu i zwraca alfabet, od którego rozpoczyna.
newContact jest obiektem podmiotu.