【问题标题】:Saving to specific core data object in Today Extension保存到 Today Extension 中的特定核心数据对象
【发布时间】:2015-10-01 11:14:52
【问题描述】:

处理我的 iOS 项目的一部分,该项目需要引用用户在主应用程序中选择的特定对象,该对象是通过切换开关设置的,该切换开关激活要在 Today Extension 中使用的指定对象以记录简单对象由用户在 Today Extension 中创建。我不确定如何具体执行此操作。我考虑过使用 NSUSerDefaults 作为指定该对象的 go to 方法,但这对我来说是全新的。有没有人以前在这里走这条路?有谁知道在 Today Extension 中引用您要存储的特定对象的方法?

【问题讨论】:

  • 有谁知道这方面的任何线索?

标签: swift core-data swift2


【解决方案1】:

您可以使用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(以下已简化,您必须正确处理选项):

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是上面保存的托管对象。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-07-04
    • 1970-01-01
    • 2017-03-09
    • 1970-01-01
    • 1970-01-01
    • 2011-03-15
    • 1970-01-01
    相关资源
    最近更新 更多