1

このサイト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;
} 
4

2 に答える 2

1

このメソッドを呼び出してみることができます:

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

myIDで指定されたオブジェクトをフェッチできない、存在しない、または障害が発生しない場合は、nilを返します。

于 2010-07-29T08:43:07.587 に答える
0

ドキュメントには、objectIDを取得する前にオブジェクトをストアに保存する必要があると記載されています。あなたは店を保存する前にそれを手に入れていますか?

また、オブジェクトの一意のプロパティの値を保存して、代わりに検索を実行することを検討してください。

于 2010-03-24T13:25:24.927 に答える