Как проверить, есть ли объект в базе данных, прежде чем сохранять новый? - PullRequest
0 голосов
/ 11 февраля 2010

Пример: у меня есть список друзей, которых я получаю в виде XML с веб-сервера. На устройстве я хочу хранить этих друзей с помощью функции обновления локально. Но я хочу хранить только новых друзей. Для простоты я различаю их только по имени (да, это плохо!).

Когда анализатор XML проходит по XML, он генерирует управляемые объекты для всех друзей и вешает их в контекст управляемого объекта. Но прежде чем сохранить контекст, я хочу избавиться от всех тех «новых» друзей, которые уже есть в базе данных. В настоящее время у меня есть:

NSEntityDescription *entityDescription = [NSEntityDescription entityForName:@"Friend" inManagedObjectContext:context]; 

NSFetchRequest *request = [[[NSFetchRequest alloc] init] autorelease]; 

[request setEntity:entityDescription]; 

[request setPredicate:[NSPredicate predicateWithFormat:@"firstName == 'George'"]]; 
NSError *error = nil; 
NSArray *array = [context executeFetchRequest:request error:&error];

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

1 Ответ

1 голос
/ 11 февраля 2010

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

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