我试图从保存在用户默认值中的NSURL中检索和创建托管对象,但我无法弄清楚如何使用managedObjectIDForURIRepresentation函数。我的代码如下所示:
func setCoreData(){
let defaults = NSUserDefaults.standardUserDefaults()
let usedKeyName = "timerList"
let usedList = defaults.objectForKey(usedKeyName) as? [NSURL] ?? []
let url:NSURL = usedList[0] as NSURL
let managedobject:NSManagedObjectID = //What do I write here?
}
任何建议都将不胜感激。
答案 0 :(得分:6)
要从URI表示中获取NSManagedObjectID
,您必须在NSManagedObjectContext
或NSPersistentStoreCoordinator
- managedObjectIDForURIRepresentation:
上调用相应的方法。
URI表示包括用于保存对象的商店的UUID。调用managedObjectIDForURIRepresentation:
将导致Core Data尝试根据该信息查找正确的存储,然后使用URI的其余部分来查找该特定对象。因此,请确保每次启动时商店的UUID都不会更改。如果Core Data无法找到与URI表示关联的数据managedObjectIDForURIRepresentation:
,则返回nil。
所以,例如,你会做类似的事情:
NSManagedObjectID objectId = [[managedObjectContext persistentStoreCoordinator] managedObjectIDForURIRepresentation:uri];
或者在swift:
let objectId:NSManagedObjectID = persistentStoreCoordinator.managedObjectIDForURIRepresentation(uri)