Я занимаюсь разработкой приложения для iPad, в котором хранится информация о местах, отображаемых в виде таблицы.Пользователь сможет сортировать местоположения по Все (Отдельная секция в алфавитном порядке), Регион мудрый (Каждый регион как секция) и Тип мудрый (Каждый типкак раздел).Я использую отдельный NSFetchedResultController для каждого, так как «sectionNameKeyPath» должен быть задан во время инициализации.У меня сейчас 2 проблемы.Потратил более 1 недели на поиск, но решения, которые я нашел, создали больше связанных проблем.
1) Для любого обновления (например, установить местоположение как избранное) вместо NSFetchedResultsChangeDelete вместо NSFetchedResultsChangeUpdate указывается NSFetchedResultsChangeUpdate.
- Во многих форумах говорится, что это известная ошибка, если мы используем несколько fetchedResultController
- Единственный способ, которого я мог избежать, - это не использовать методы делегата и производить выборку заново для каждого изменения.Поэтому отсутствует только анимация просмотра таблицы.
- Не все обновления возвращают делегатский ответ.Я иду правильным образом или есть лучший способ, которым я могу использовать один FetchedResultController?
2) сортировка табличного представления для Типы не может эффективно использовать FetchedResultController с текущим дизайном Entity.Текущий дизайн использования объектов Местоположение, типы и регион.Отношение к региону - отношение один ко многим.Но расположение к типам - это отношение многие ко многим в обоих направлениях.[Я пытался загрузить изображение дизайна объекта, но моя репутация не позволяет этого.]
- Типы до Расположение отношение много ко многим в обоихнаправление.Поэтому не может дать sectionNameKeyPath, потому что типами является Set в Location entity.Так что я извлекаю из Типы сущности и получаю массив местоположений (набор) из этого.
- Таким образом, numberOfRows может быть вычислено из set.поэтому я сортирую его с помощью компаратора.Я не уверен, что это правильный путь, поэтому прошу всех вас дать ценные советы по дизайну этой сущности.