Могу ли я использовать более одного sectionNameKeyPath в fetchedResultsController? - PullRequest
3 голосов
/ 26 марта 2012

У меня есть список «счетов» в основных данных. Для каждого счета я хочу, чтобы в UITableViewController был отдельный раздел. Я хочу, чтобы эти счета были отсортированы по сумме.

Для этого я использую fetchedResultsController. Каждый счет имеет сумму и идентификатор счета. Я сделал sortDescriptor «количество» и sectionNameKeyPath «billID». Это вызывает проблемы, потому что didChangeSection не вызывается должным образом, когда это необходимо.

Я немного покопался и наткнулся на этот пост: Имя пользовательского раздела Crashing NSFetchedResultsController

И, похоже, в документации Apple говорится, что основной дескриптор сортировки должен совпадать с sectionNameKeyPath.

Я сохранил sortDescriptor как «количество» и изменил sectionNameKeyPath как «billID». Это исправило поведение. Однако, если два счета имеют одинаковую «сумму», они будут в одном разделе, что мне не нужно. Можно ли в любом случае использовать sectionNameKeyPath в зависимости от двух переменных, например, «сумма» и «billID», чтобы я мог гарантировать отдельный раздел для каждого счета, но при этом он отсортирован по сумме?

Заранее спасибо.

1 Ответ

0 голосов
/ 26 октября 2014

Свойство sortDescriptor NSFetchRequest на самом деле является массивом.Мы можем передать ему более одного sortDescriptor в соответствии с порядком свойств, чтобы отсортировать результаты.

Попробуйте этот порядок sortDecriptor s

request.sortDescriptors= @[billIdSortDescriptor, amountSortDescriptor];

Здесь request - это NSFetchRequest, переданный NSFetchedResultsController, поэтому результаты сначала будут отсортированы по идентификатору счета, а объекты с одинаковым billID будут отсортированы по количеству.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...