У меня есть подкласс NSManagedObject под названием Tour. Я сохранил ссылку на него, используя этот код:Как получить сохраненную ссылку на подкласс NSManagedObject?
prefs = [NSUserDefaults standardUserDefaults];
NSURL *myURL = [[myTour objectID] URIRepresentation];
NSData *uriData = [NSKeyedArchiver archivedDataWithRootObject:myURL];
[prefs setObject:uriData forKey:@"tour"];
Теперь я хочу его восстановить. Я попытался с помощью:.
NSData *myData = [prefs objectForKey:@"tour"];
NSURL *myURL = [NSKeyedUnarchiver unarchiveObjectWithData:myData];
TourAppDelegate *appDelegate = (TourAppDelegate *)[[UIApplication sharedApplication] delegate];
NSManagedObjectID *myID = [appDelegate.persistentStoreCoordinator managedObjectIDForURIRepresentation:myURL];
if (myID)
{
Tour *tempObject = [appDelegate.managedObjectContext objectWithID:myID]; //WARNING
tour = tempObject;
}
if (tour) //instruction...
Но это дает мне это предупреждение «Несовместимые типы Objective-C Инициализация 'структура NSManagedObject *', как ожидается 'структура Tour *
Plus, при выполнении, это дает мне это : Нагрузочное приложение из-за неперехваченное исключение «NSObjectInaccessibleException», причина: «CoreData не может выполнить вину за» 0x5001eb0
Как я могу решить эту проблему
Вы можете пропустить 'NSData' шаг:' [userDefaults setURL: URL forKey: kActiveLibrary] '- - -' NSURL * URL = [userDefaults URLForKey: kActiveLibrary]; '- - - и я должен повторить голосование за' [self.managedObjectContext objectWithID: oid] ' – bshirley