Как проверить наличие ссылки на NSManagedObject? - PullRequest
1 голос
/ 24 марта 2010

Я успешно сохранил и получил ссылку на NSManagedObject, используя пример, найденный на этом сайте http://cocoawithlove.com/2008/08/safely-fetching-nsmanagedobject-by-uri.html

Проблема в том, что происходит сбой приложения при попытке извлечь NSManagedObject, который был удален.

Я попробовал метод isFault на объекте, но он всегда возвращает no, даже если объект существует.

Вот мой код, который я использую для его получения:

NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
NSData *myData = [prefs objectForKey:@"activatedObject"];
if (myData)
{
    NSURL *myURL = [NSKeyedUnarchiver unarchiveObjectWithData:myData];
    NSManagedObjectID *myID = [self.persistentStoreCoordinator managedObjectIDForURIRepresentation:myURL];
    id myObject = [self.managedObjectContext objectWithID:myID];
    self.Object = myObject;
} 

Ответы [ 2 ]

1 голос
/ 29 июля 2010

Вы можете попробовать вызвать этот метод:

NSError *error = nil;
id myObject = [self.managedObjectContext existingObjectWithID:myID error:&error];

Если объект, указанный в myID, не может быть выбран, или не существует, или не может быть поврежден, он возвращает nil.

0 голосов
/ 24 марта 2010

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

Также рассмотрите возможность сохранения значения уникального свойства объекта и просто выполните поиск.

...