如何检查是否存在对NSManagedObject的引用?

时间:2010-03-24 12:59:04

标签: iphone core-data reference nsuserdefaults nsmanagedobject

我使用此网站http://cocoawithlove.com/2008/08/safely-fetching-nsmanagedobject-by-uri.html中的示例成功存储并检索了对NSManagedObject的引用

问题是,应用程序崩溃时需要检索已删除的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 个答案:

答案 0 :(得分:1)

您可以尝试调用此方法:

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

如果myID指定的对象无法获取,或者不存在,或者无法出现故障,则返回nil。

答案 1 :(得分:0)

文档提到在获取objectID之前必须将对象保存到商店。你在保存商店之前得到它吗?

另外,只需考虑保存对象的唯一属性的值,而只是执行搜索。