5

Używam NSFetchedResultController. Poniżej znajduje się scenariusz, który chcę osiągnąć.NSFetchedResultController Sction Name - Niestandardowe sortowanie według dat

  • mam tabeli wiadomości atrybutów MessageDate (tj NSDate). Muszę posortować wiadomości według etykiet daty jako Dzisiaj, Wczoraj, Ostatni tydzień i Starsze.

  • Próbowałem używać NSSortDescriptor z metodą selektora, ale format metody Selector zwraca tylko obiekt NSComparisonResult.

+0

Czy przeczytałeś o tym, jak działają sekcje? Masz nazwy sortowania i sekcji osobno w swojej implementacji? Pokaż kod. – Wain

+0

Tak, zrobiłem. Muszę posortować daty porównując je z bieżącą datą. Dla Ex.if Data wiadomości jest dzisiejszą datą powinna się zgrupować. Jeśli jego Wczorajszy dzień powinien się zgrupować we wczorajszej grupie i tak dalej. –

Odpowiedz

0

Zamiast sortować wyniki, spróbuj dodać swoje deskryptory sortowania do samego żądania pobierania. I utwórz instancję NSFetchedResultController za pomocą tego żądania pobierania.

Na przykład można użyć tego fragmentu kodu.

NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"messageDate" ascending:YES]; 

NSArray *sortDescriptors = [[NSArray alloc] initWithObjects:sortDescriptor, nil]; 

[fetchRequest setSortDescriptors:sortDescriptors]; 

NSFetchedResultsController *myFetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest managedObjectContext:managedObjectContext sectionNameKeyPath:@"message" cacheName:nil];                                            
+0

Prawdopodobnie chcesz dodać pewne szczegóły dotyczące komunikatu 'sectionNameKeyPath: @" "' – Wain