我正在尝试归档/取消归档 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 中的转换器值字段留空,因为核心数据文档似乎暗示如果为空,则使用默认转换器。
我究竟做错了什么?
最佳答案
您可以在不存储 URL 的情况下解决此问题。考虑将 bool 标志添加到模型中,并将要检索的对象标记为true,然后在下次应用启动时获取标记的对象。
但是,您可以尝试使用 -absoluteString
获取 URL 的字符串版本并存储它。
关于ios - 在核心数据中存储 NSURL 的正确方法是什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10230816/