CoreData: error: (NSFetchedResultsController) The fetched object at index 72 has an out of order section name 'อั. Objects must be sorted by section name'Błąd danych podstawowych: "Obiekty muszą być posortowane według nazwy sekcji" w przypadku określonych języków, takich jak tajski
Używam następującego kodu do sortowania według pola tytułu książki i wyświetlania pierwszej dużej litery tytułu książki książki jako nazwy sekcji w a UITableViewController.
Kod działa doskonale we wszystkich językach z wyjątkiem tajlandzkiego. Czytam w Internecie, że istnieją specjalne znaki spoza Stanów Zjednoczonych powodujące takie problemy (np. Æ), ale nie znalazłem jeszcze żadnego rozwiązania.
Zobacz gschandler odpowiedź na The fetched object at index [i] has an out of order section name 'å
Kodeks FRC jest
NSFetchedResultsController *aFetchedResultsController =
[[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest
managedObjectContext:managedObjectContext
sectionNameKeyPath:@"titleFirstLetter"
cacheName:nil];
Kodeks PierwszaLit jest:
- (NSString *)titleFirstLetter {
// support UTF-16:
NSString* val = [self.title substringWithRange:[self.title rangeOfComposedCharacterSequenceAtIndex:0]];
return [val uppercaseString];
}
Wszelkie sugestie?
Mam dokładnie ten sam problem, każdy język oprócz tajlandzkich utworów. Czy znalazłeś jakieś obejście? Czy podejście Gschandlera jest najlepsze? – jannej
Początkowo stosowałem podejście gschandlera, ponieważ uważałem, że język tajlandzki jest jedynym problematycznym językiem ... Jednak gdy odkryłem, że niektóre postacie w języku niemieckim również powodują ten problem, postanowiłem, że rozwiązanie tego problemu jest koniecznością. Moim rozwiązaniem było po prostu dodanie pola "titleFirstLetter" w bazie danych sqlite zamiast pobierania tego pola w środowisku wykonawczym. W ten sposób wszystkie prace sortowania są wykonywane przez bazę danych sqlite i nie pojawia się żaden konflikt. Z pewnością nie jest to najczystsze rozwiązanie pod względem projektu DB, ale to obejście działa idealnie. – Joshua
Ah ... teraz pamiętam, miałem podobny problem w innej aplikacji z CoreData i tworzenie wartości w czasie wykonywania, który zakończył się z dodatkową pracą w terenie. Wydaje się być najbezpieczniejszym sposobem. Dziękuję Ci! :-) – jannej