Я пытаюсь написать систему избранного для своего приложения. Я уже преобразовал свою модель в управляемый объект. Итак, представьте, что пользователю предоставляется экран со списком таких объектов. Они могут сохранить некоторые из них в избранное, что позволит сохранить их в основных данных.
Проблема в том, что когда я создаю все эти объекты модели, я делаю это с контекстом управляемого объекта. Если пользователь сохранит один в избранное, он сохранит весь контекст и сохранит каждую отдельную сущность. Дополнения не будут в их избранном, поскольку добавление в избранное создает «избранную» сущность, которая сохраняется и указывает на объект, которого не будет у других. Но все остальные объекты будут сохранены без надобности.
Каков стандартный выход из этого / стандартного способа создания системы избранного iPhone? Должен ли я разделить мою модель на два класса: тот, который я показываю пользователю, а затем тот, который сохраняется в БД? Таким образом, я мог создавать свои модели, не помещая их в MOC. Но это будет дублированный класс со всеми теми же полями.
На самом деле не существует стандартного способа сделать это, потому что Core Data ожидает, что вы сохраните созданные вами объекты. Однако, если вы создаете объекты с помощью:
id object = [[NSManagedObject alloc] initWithEntityDescription:entity inManagedObjectContext:nil];
У них не будет контекста для сохранения. Затем для тех, которые вам нужно сохранить, вы можете:
[[self managedObjectContext] insertObject:object];
Затем вызвать -save:
в контексте, и будут сохранены только те, у которых был установлен контекст.
Не проще ли иметь свойство isFavorite для ваших управляемых объектов. Затем в вашем представлении избранного вы можете фильтровать на основе этого?