8

Mam podmiot Order z właściwością paid, który jest boolowskim.sectionNameKeyPath z NSFetchedResultsController nie działa

Chcę wyświetlić wszystkie zamówienia w numerze UITableView, ale chcę je pogrupować w dwóch sekcjach: "Nieopłacone" i "Opłacone". Więc pomyślałem, że po prostu dać „płatne” jako sectionNameKeyPath, tak:

fetchedResultsController = [[NSFetchedResultsController alloc] 
     initWithFetchRequest:fetchRequest 
     managedObjectContext:managedObjectContext 
      sectionNameKeyPath:@"paid" 
        cacheName:nil]; 

Według mojego rozumowania, skutkowałoby to w dwóch sekcjach, gdzie pierwsza sekcja zawiera wszystkie rozkazy z płatnego = Nie (0) a druga sekcja z opcją = TAK (1).

Ale kiedy dodaję nowe zamówienie z opcją = TAK, pojawia się ono w pierwszej sekcji. Kiedy sprawdzam delegowanego kontrolera wyników, widzę, że tworzony jest nowy rekord z indexPath [0,0]! Dlaczego nie zostanie wstawiony do drugiej sekcji?

Odpowiedz

12

spróbuj dodać tablicę deskryptorów sortowania do NSFetchRequest używanego z NSFetchedResultsController.

Najpierw będziesz chciał posortować płatną wartość boolowską, a następnie cokolwiek chcesz sortować.

Swift 3 Przykład:

fetchRequest = ... // <- instantiate your fetch request 

let sortByPaid = NSSortDescriptor(key: "paid", ascending: true) 
let sortByCustomerName = NSSortDescriptor(key: "customer.name", ascending: true) // <- if Order had a relationship to Customer that had an attribute name 
fetchRequest.sortDescriptors = [sortByPaid, sortByCustomerName] 

// now instantiate fetchedResultsController as in the question above 
+0

ty jesteś szefem! – raed

+0

Ponadto dodany deskryptor sortowania (jeśli jest pojedynczy) powinien różnić się od deskryptora używanego do wygenerowania keypath – jackal

+0

Więc jaka jest właściwie odpowiedź na ten problem? Co dokładnie powinienem zrobić? –

Powiązane problemy