У меня есть подкласс NSManagedObject с именем Tour. Я сохранил ссылку на него, используя этот код:
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. Инициализация" struct NSManagedObject * ", ожидаемый" struct Tour * "
Кроме того, при выполнении это дает мне следующее: Завершение приложения из-за необработанного исключения 'NSObjectInaccessibleException', причина: 'CoreData не может выполнить ошибку для' 0x5001eb0
Как я могу решить это?