Я использую Core Data в своем приложении OS X, где у меня есть некоторые TableViews, связанные с NSArrayControllers. Проблема в том, что я пытаюсь заполнить табличное представление на листе, используя контроллер массива, где я не хочу, чтобы содержимое сохранялось.
Вот как приложение висит вместе;
Окно 1 - показывает список пользователей в табличном представлении и позволяет добавлять и удалять пользователей. Содержимое сохраняется через привязки Core Data.
Окно 2 - показывает список групп в табличном представлении. Второе табличное представление показывает список пользователей, которые принадлежат к выбранной группе. Содержание сохраняется через привязки Core Data. Кнопка «добавить пользователей» вызывает лист для добавления пользователей в группу.
Лист добавления пользователей - этот лист показывает табличное представление пользователей, которые еще не являются членами выбранной группы. Нажатие кнопки закрытия на листе добавляет выбранных пользователей в выбранную группу.
Итак, у меня проблема с контроллером массива для листа Add Users. Когда я вызываю лист, я перебираю всех пользователей и добавляю их к контроллеру массива, если они еще не существуют в группе. Когда я закрываю лист, я пытаюсь очистить контроллер массива, используя removeObject: но это приводит к тому, что «нельзя использовать этот метод с ModelObjectContect».
Зачем мне MOC для удаления элементов из контроллера массива? Это только для демонстрации, поэтому мне не нужно, чтобы оно сохранялось. Если я установлю для контроллеров массива MOC значение моего делегата приложения, это физически удалит пользователей, чего я явно не хочу. Я просто хочу удалить их из табличного представления листа.
Я подумал, что ответом может быть создание другого MOC для использования в качестве блокнота, а не привязка его к постоянному хранилищу, однако это просто дало мне другую ошибку при использовании removeObject :, что-то вроде «can» t удалить объекты, которые существуют в другом MOC. "
Почему мне разрешено добавлять объекты в контроллер массива, но не удалять их? В тех случаях, когда вы на самом деле не хотите, чтобы элементы были физически удалены, вы должны получить доступ к базовому «контенту», например, [содержимое контроллера массива]? Я играл с этим, но получаю странные результаты отображения, поскольку кажется, что он играет с контентом контроллера массива за его спиной. Если я сделаю это, есть ли способ сообщить контроллеру массива «кстати, я возился с вашим контентом, и вам, возможно, понадобится собраться»?
Мне кажется, что вы не должны использовать контроллеры массива без Core Data, но в документации есть множество комментариев, которые предполагают, что они работают с основными данными и без них.