我正在尝试在 Core Data 对象中存档/取消存档 NSManagedObjectID,以便下次我的应用程序启动时,我可以检索这些 ID 并使用它们来获取特定对象。
我尝试像这样“归档”ID:
//defaultConfiguration is an NSManagedObject defined elsewhere and it works just fine...
// and newObject is also properly initialized, bound to a context,etc...
ArchivedID* newID = [NSEntityDescription insertNewObjectForEntityForName:@"ArchivedID" inManagedObjectContext:managedObjectContext];
[self.defaultConfiguration addArchiveIDObject:newID];
newID.idURI = [[newObject objectID] URIRepresentation];
[managedObjectContext save:&error];
然后像这样取消归档(我只是去 [anyObject] 因为我正在测试,此时只有一个):
NSManagedObjectID* ID = [managedObjectContext.persistentStoreCoordinator managedObjectIDForURIRepresentation:[defaultConfiguration.archiveID anyObject]];
但是当我尝试像上面那样获取 URL 时,我得到以下异常:
Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[ArchivedID relativeString]: unrecognized selector sent to instance 0x7f59f20'
实体中的属性是通过 Xcode 设置为“可转换”的,我将 Xcode 中的转换器值字段留空,因为核心数据文档似乎暗示如果为空则使用默认转换器。
我究竟做错了什么?