Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 使用NSURL检索托管对象ID_Ios_Swift_Core Data_Nsmanagedobject_Nsmanagedobjectcontext - Fatal编程技术网

Ios 使用NSURL检索托管对象ID

Ios 使用NSURL检索托管对象ID,ios,swift,core-data,nsmanagedobject,nsmanagedobjectcontext,Ios,Swift,Core Data,Nsmanagedobject,Nsmanagedobjectcontext,我试图从保存在用户默认值中的NSURL检索并创建托管对象,但我不知道如何使用ManagedObjectedForUriRepresentation函数。我的代码如下所示: func setCoreData(){ let defaults = NSUserDefaults.standardUserDefaults() let usedKeyName = "timerList" let usedList = defaults.objectForKey(usedKeyName)

我试图从保存在用户默认值中的NSURL检索并创建托管对象,但我不知道如何使用ManagedObjectedForUriRepresentation函数。我的代码如下所示:

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?

}

如果您有任何建议,我们将不胜感激。

要从URI表示中获取
NSManagedObjectID
,您必须调用
NSManagedObjectContext
NSPersistentStoreCoordinator
-
ManagedObjectForUriRepresentation:

URI表示包括用于持久化对象的存储的UUID。调用
managedObjectdForUriRepresentation:
将导致核心数据尝试根据该信息找到正确的存储,然后使用URI的其余部分来定位该特定对象。因此,请确保您的店铺的UUID不会在每次启动时更改。如果核心数据找不到与URI表示相关联的数据,则
managedObjectdForUriRepresentation:
将返回nil

例如,你可以做如下的事情:

NSManagedObjectID objectId = [[managedObjectContext persistentStoreCoordinator] managedObjectIDForURIRepresentation:uri];
或使用swift:

let objectId:NSManagedObjectID = persistentStoreCoordinator.managedObjectIDForURIRepresentation(uri)

将objectID存储在用户默认值中可能是一个坏主意,因为它不能保证在应用程序启动期间保持稳定。比较。@MartinR您今天早些时候对我提出的关于在自定义单元格中完成计时器时更新核心数据的问题做出了贡献,这是这个问题的继续。您拥有解决此问题的知识,因此我问您:是否需要向对象添加流程信息?如果是,这是如何做到的?最后,如果我不能在单元格中保存对该唯一流程信息的任何类型的引用,我可以在何处以及如何保存它,以便它在更新核心数据模型时知道要检索什么?看起来@frank21正在持久化URI表示,这是(相对)安全的。