正在处理我的 iOS 项目的一部分,该部分需要引用用户在主应用程序中选择的特定对象,该对象通过切换开关进行设置,该切换开关激活要在 Today 扩展中使用的指定对象来记录简单对象由用户在 Today 扩展中创建。我不确定如何具体去做这件事。我考虑过使用 NSUSerDefaults 作为指定该对象的 go to 方法,但这对我来说是全新的。以前有人走过这条路吗?有谁知道如何在 Today 扩展中引用您想要存储的特定对象?
最佳答案
您可以使用 objectID
属性(NSManagedObjectID
的实例)保存对特定托管对象的引用,该属性可以转换为 URI。然后可以将 URI 转换为 NSData
,您可以将其保存在用户默认值中。
要保存引用,请获取 URI 形式的对象 ID:
let objectIDURI = newManagedObject.objectID.URIRepresentation()
然后转换为NSData
并保存:
let objectIDURIData = NSKeyedArchiver.archivedDataWithRootObject(objectIDURI)
NSUserDefaults.standardUserDefaults().setObject(objectIDURIData, forKey: "savedID")
要取回对象,请加载 NSData
并转换回 NSURL
(以下内容已简化,您必须正确处理选项):
let savedObjectIDURIData = NSUserDefaults.standardUserDefaults().objectForKey("savedID") as? NSData
let savedObjectIDURI = NSKeyedUnarchiver.unarchiveObjectWithData(savedObjectIDURIData!) as? NSURL
然后将 ID 转换回 NSManagedObjectID
并获取托管对象:
let savedObjectID = context.persistentStoreCoordinator?.managedObjectIDForURIRepresentation(savedObjectIDURI!)
let savedObject = context.objectWithID(savedObjectID!)
此时savedObject
就是上面保存的托管对象。
关于swift - 保存到 Today Extension 中的特定核心数据对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32886197/