Как не сохранять NSManagedObjects, извлеченные из NSManagedObjectContext - PullRequest
2 голосов
/ 20 апреля 2010

Я анализирую XML-файл, содержащий книги, для каждого нового узла, который я иду:

Book *book = (Book*)[NSEntityDescription insertNewObjectForEntityForName:@"Book" inManagedObjectContext:managedObjectContext];

Чтобы получить NSManagedObject моего основного объекта Data Book, я затем продолжаю заполнять объект управляемой книги данными, добавляю его в массив, промываю, повторяю.

Когда я закончу, я представляю список книг пользователю. Я еще не выполнил сохранение:

NSError *error;
if (![managedObjectContext save:&error]) {
    NSLog(@"%@", [error domain]);
}

Пользователь теперь выбирает одну из книг, эту, которую я хотел бы сохранить, но только эта, все остальные книги меня больше не интересуют. Книжная сущность не имеет / или является частью каких-либо отношений. Это просто «единая» сущность.

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

Как бы мне обойти эту проблему, я не могу найти этот конкретный пример использования в Руководстве по программированию основных данных, что также немного меня беспокоит, я иду против лучших практик здесь?

Спасибо за любую помощь.

1 Ответ

1 голос
/ 20 апреля 2010

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

Какой вред в сохранении других книг? Будет ли использоваться только один раз?

Судя по небольшому количеству предоставленной вами информации, ваш подход к проблеме необходимо пересмотреть.

Обновление

Удаление несохраненных объектов из контекста приводит к очень небольшим издержкам - да, так что это лучшее решение с учетом имеющихся у вас параметров. Я задал другие вопросы, чтобы узнать, есть ли более чистое общее решение, а не строить объекты, чтобы просто выбросить их. Похоже, вы уже пошли по этому пути.

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