Я конвертирую приложение из объектов SQLitePersistentObjects в CoreData.
В приложении есть класс, для которого я генерирую множество * экземпляров из файла XML, полученного с моего сервера. Пользовательский интерфейс может инициировать действия, которые потребуют от меня сохранения некоторых * этих объектов до следующего вызова приложения.
За исключением наличия одного NSManagedObjectContext для каждого из этих объектов (совместно используется только с их подчиненными объектами, которые могут включать большие двоичные объекты). Я не могу понять, каким образом я могу иметь мелкозернистый контроль (т.е. на уровне объектов) над тем, какие объекты сохраняются. Если я пытаюсь создать единый контекст для всех вновь создаваемых объектов, я получаю исключение, когда пытаюсь переместить один из моих объектов в новый контекст, чтобы я мог сохранить его самостоятельно. Я предполагаю, что это потому, что принадлежащие ему объекты остаются в «старом» контексте.
Другой вариант, который я вижу, - иметь один контекст, сохранить все мои объекты, а затем удалить те, которые мне не нужны, позже - кажется, что это слишком сильно ударит по базе данных, но, возможно, CoreData делает магию.
Итак:
- Я что-то упустил из-за того, как должно быть спроектировано приложение CoreData?
- Является ли наличие контекста для объекта хорошим шаблоном проектирования?
- Есть ли лучший способ перемещать объекты между контекстами, чтобы избежать 2?
*, где «многие» означают «десятки, может быть, сотни, а не тысячи», а «некоторые» по крайней мере на один порядок меньше, чем «многие»
Также кросс опубликован на форумах Apple .