Создание копии NSManagedObject, которая не управляется - PullRequest
4 голосов
/ 31 января 2010

Так что моя проблема в том, что у меня есть NSManagedObject 'A', который имеет отношение has-many к 'b'. Таким образом, для каждого объекта «A» может быть много «b».

Теперь я хочу сделать копию «b», чтобы «b» можно было изменить, но не сохранить в магазине, а «A» можно сохранить ».

Например,

self.title = A.name;
setOfB = A.setOfb; // This is still managed by CoreData
temporaryCopyOfB = [setOfB unManagedCopy];// I want to make a copy of b which isn't managed
b = [temporaryCopyOfB objectAtIndex:0];
b.property = newValue;
[A save];

//[setOfB objectAtIndex:0].property should still == oldValue

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

Дайте мне знать, если у вас есть какие-либо вопросы, я знаю, что, возможно, мне нужно уточнить это для вас.

1 Ответ

2 голосов
/ 31 января 2010

вижу пару решений:

  1. Создайте еще одну сущность для временного использования. Он будет иметь тот же родительский класс, что и объект, который копирует, но не будет иметь всех связей. Вставьте его в контекст и скопируйте значения. Сохраните массив этих временных объектов и при необходимости удалите их все из контекста. Я делал это раньше, и это работало, но это немного сложно.

  2. Создайте объект словаря и добавьте в него все ключи и значения управляемых объектов. Это, вероятно, проще, но я не пробовал.

Имейте в виду, как вы копируете объект. Возможно, вы захотите сделать более глубокую копию (создав новый объект для хранения атрибута), а не указывать на тот же объект атрибута, что и исходный объект.

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