sectionNameKeyPath с NSFetchedResultsController не работает - PullRequest
9 голосов
/ 07 июля 2011

У меня есть сущность Order со свойством paid, которая является логическим значением.

Я хочу отобразить все ордера в UITableView, но я хочу сгруппировать их в два раздела: 'Не оплачено и оплачено.Поэтому я подумал, что я бы просто дал «оплачено» как sectionNameKeyPath, например:

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

Согласно моим рассуждениям, это приведет к двум разделам, где первый раздел содержит все заказы с оплаченным =НЕТ (0) и второй раздел с оплаченным = ДА (1).

Но когда я добавляю новый Заказ с оплаченным = ДА, он отображается в первом разделе.Когда я проверяю делегата контроллера полученных результатов, я вижу, что создается новая запись с indexPath [0,0]!Почему он не вставляется во второй раздел?

1 Ответ

16 голосов
/ 08 июля 2011

попробуйте добавить массив дескрипторов сортировки в NSFetchRequest, который используется с вашим NSFetchedResultsController.

Сначала вы захотите отсортировать по платному логическому значению, а затем по всему, что вы хотите отсортировать.1004 * Swift 3 пример:

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...