Swift 保存到当前扩展中的特定核心数据对象
处理iOS项目的一部分,该部分需要引用用户在主应用程序中选择的特定对象,该对象通过一个切换开关设置,该开关激活要在Today Extension中使用的指定对象,以记录用户在Today Extension中创建的简单对象。我不确定如何具体地做这件事。我曾考虑使用NSUSerDefaults作为指定该对象的go-to方法,但这对我来说是全新的。以前有人在这里走过这条路吗?有人知道如何引用要在Today扩展中存储到的特定对象吗?您可以使用Swift 保存到当前扩展中的特定核心数据对象,swift,core-data,swift2,Swift,Core Data,Swift2,处理iOS项目的一部分,该部分需要引用用户在主应用程序中选择的特定对象,该对象通过一个切换开关设置,该开关激活要在Today Extension中使用的指定对象,以记录用户在Today Extension中创建的简单对象。我不确定如何具体地做这件事。我曾考虑使用NSUSerDefaults作为指定该对象的go-to方法,但这对我来说是全新的。以前有人在这里走过这条路吗?有人知道如何引用要在Today扩展中存储到的特定对象吗?您可以使用objectID属性(NSManagedObjectID的实例
objectID
属性(NSManagedObjectID的实例)保存对特定托管对象的引用,该属性可以转换为URI。然后可以将URI转换为NSData
,您可以将其保存为用户默认值
要保存引用,请将对象的ID作为URI获取:
let objectIDURI = newManagedObject.objectID.URIRepresentation()
然后转换到NSData
并保存:
let objectIDURIData = NSKeyedArchiver.archivedDataWithRootObject(objectIDURI)
NSUserDefaults.standardUserDefaults().setObject(objectIDURIData, forKey: "savedID")
要取回对象,请加载NSData
,并将其转换回NSURL
(以下内容已简化,您必须正确处理选项):
然后将ID转换回NSManagedObjectID
,并获取托管对象:
let savedObjectID = context.persistentStoreCoordinator?.managedObjectIDForURIRepresentation(savedObjectIDURI!)
let savedObject = context.objectWithID(savedObjectID!)
此时,
savedObject
是上面保存的托管对象。有人知道这方面的任何线索吗?
let savedObjectID = context.persistentStoreCoordinator?.managedObjectIDForURIRepresentation(savedObjectIDURI!)
let savedObject = context.objectWithID(savedObjectID!)