Основные данные: объединение нескольких контекстов управляемых объектов и удаление объектов - PullRequest
3 голосов
/ 15 марта 2010

У меня есть проект iPhone, где у меня есть серия управляемых объектов в контексте управляемого объекта в основном потоке приложения.В отдельном потоке я импортирую новые объекты с веб-сервера во второй контекст управляемых объектов.

Если импорт проходит без ошибок, я сохраняю контекст импорта.Это вызывает contextDidSave, из которого я вызываю mergeChangesFromContextDidSaveNotification.Два контекста сливаются хорошо.Пока все хорошо.

Моя желаемая функциональность заключается в том, чтобы удалять любые объекты, которые находятся в исходном MOC, но не в импортированном MOC (идея состоит в том, что пользователь обновляет данные, и это так давно).данные должны быть удалены), но объединение, по-видимому, просто объединяет 2 MOC.

Подскажите, пожалуйста, есть ли способ управления объединением 2 MOC, чтобы те, кто не входит в один, были удалены вдругой

Ответы [ 3 ]

1 голос
/ 15 марта 2010

Когда вы создаете новый moc, он имеет доступ ко всем старым объектам, поэтому вы можете обрабатывать удаление в фоновом потоке как часть импорта.

0 голосов
/ 17 апреля 2010

Что я делаю в такой ситуации, это метод "prepareForDelet", который помечает свойство "удалить" для YES. Затем, когда я импортирую мои объекты, если они уже существуют, я отмечаю как удалить НЕТ. Когда мой поток закончен, я могу удалить все объекты, чье удаление - ДА

0 голосов
/ 15 марта 2010

То, что вы описываете, на самом деле не просто импортирует. Логика принятия решения о том, какие объекты «обновляются», зависит от конкретного приложения. Вы можете справиться с этим в потоке импорта, выбирая эти объекты и обновляя их, а не создавая новые экземпляры, или вы можете выполнять работу после измерения. Из двух вариантов я бы предпочел первый, так как он более соответствует образу основных данных.

...