Я проектирую свой первый проект с использованием Core Data (для iPhone), и у меня есть некоторые проблемы, которые могут быть связаны с моим дизайнерским подходом.Основные данные: вопросы дизайна. Обертки объектов или нет?
Я делаю приложение, которое позволяет пользователю создать заказ (скажем, для ресторана). Я использую графический дизайнер для моделирования моего объекта персистентности (т. Е. OrdeMO). Я добавляю MO к ead каждого имени, чтобы указать его Управляемый объект. Я использую XCode для автоматического создания класса управляемого объекта.
Я создал несколько классов «DAO», которые позволяют вам искать или создавать новый объект в управляемом контексте.
Теперь к моей проблеме.
Я хочу создать объект OrderMO для хранения заказа, который пользователь создает, но я не хочу, чтобы он был частью контекста, пока пользователь не разместит его. Я попытался создать объект с помощью [OrderMO alloc], но объект, который я получаю, является «неполным», и когда я пытаюсь установить любой из его атрибутов, я получаю сообщение об ошибке.
Я предполагаю, что проблема заключается в том, что мне нужно создать заказ в контексте, чтобы использовать его. Это так?
Я рассмотрел различные варианты:
Создание объекта в контексте и откат пользователя, если пользователь отказывается от заказа. Проблема в том, что пользователь мог бы сохранить другой объект контекста во время процесса (например, его префы), так что это не сработает. Есть ли способ создать объект «внутри отдельной транзакции»?
Создайте объект-обертку, который будет хранить те же данные, что и MO, а затем создайте MO, когда пользователь разместит заказ. Недостатком этого является то, что я должен поддерживать новый класс.
Создайте атрибут в MO, например «помещенный», и используйте для фильтрации моих поисков в контексте. Проблема с этим в том, что я в конечном итоге с «мусорными» объекты в домене (т.е. неразмещенных заказов) и мне придется сделать некоторые очистки время от времени ...
У меня есть какие-либо другой выбор?
Любое предложение приветствуется.
Спасибо (для чтения этого длинного поста!) Gonso