Multiple выборки контроллеров (и, возможно, несколько объектов) является неправильный подход , Правильное решение состоит в том, чтобы использовать параметр sectionNameKeyPath
для NSFetchedResultController
, чтобы сгруппировать результаты по нескольким разделам. Если вы думаете о своих сущностях по-разному, возможно, они на самом деле являются одним и тем же сущностью, и вместо этого вы можете использовать свойство itemType, которое затем можно разделить (и вы также должны его отсортировать). Например. скажем, у меня были сущности Hops и Grains, тогда я мог бы изменить их на Ingredient и иметь свойство int_16 property.Type, которое затем имеет перечисление в коде для хранения значений hopType = 0
, grainType = 1
. Ведь ингредиент - это просто имя и вес, которые оба из них разделяют.
Если, однако, ваши объекты действительно имеют определенный набор свойств, то правильным решением является создание родительского абстрактного объекта, обладающего свойством, которое вы можете использовать для разделения, например. sortOrder, sectionID или тип. Когда вы затем создаете контроллер выборки и извлекаете абстрактный родительский объект, вы фактически получаете результаты, содержащие все сущности. Например, в приложении Notes у них есть абстрактный объект NoteContainer, у которого есть сущность и учетная запись.Таким образом, они могут использовать один контроллер выборки для отображения учетной записи в первой ячейке раздела, а затем иметь все папки в следующих ячейках. Например. Все iCloud Notes (на самом деле это учетная запись), затем Notes (это папка по умолчанию), а затем все пользовательские папки, а затем папка с корзиной. Они используют свойство sortOrder, а папка по умолчанию - 1, для всех пользовательских папок - 2, а трещина - 3. Затем, добавив это как дескриптор сортировки, они могут отображать ячейки в том порядке, в котором они хотят. Это немного отличается от вашего требования, потому что у них есть два объекта, смешанных в разные разделы, но вы все равно можете использовать его только с разными свойствами сортировки.
Мораль истории не воюет с каркасом, обнимает ее :-)
Спасибо за подробный ответ. Эта часть кажется довольно простой, однако есть еще 2 метода, которые я не так уверен (что они делают, и если им нужны какие-либо изменения): http://pastebin.ca/1805761 – indragie
Это зависит от того, приложение делает; мне сложно ответить, не зная намного больше о приложении, дизайне и т. д. Однако у вас, вероятно, есть безопасный выбор, только когда эти методы отправляют табличное представление сообщения reloadData. – Giao
Умело получить эту работу с небольшим мастерингом :-) Спасибо – indragie