NSCoding 到 CKRecord

Posted

技术标签:

【中文标题】NSCoding 到 CKRecord【英文标题】:NSCoding to CKRecord 【发布时间】:2016-11-10 14:50:28 【问题描述】:

我有一个自定义类,我用它制作了一个(swift-y)结构 NSCodable。现在我想将其转换为 CKRecord 以使用 CloudKit。尽管我在对结构进行编码时设置了“键值”对,但据我了解,该结构已转换为 NSData 并且您无法将其转换为字典(或另一个键值对象)。所以我觉得这不是要走的路。

有没有办法直接进行这种转换?或者中间有一个步骤(例如将 Data 转换为 [String: String]- 字典)?

【问题讨论】:

您可以将NSData 存储在CKRecord 中。 但这会导致 CKRecord 中出现数据块。我想要一种方便的转换方式。 【参考方案1】:

NSCoding 仅用于往返同一班级。相反,在您的自定义类上编写一个 toServerDictionary 方法,仅包括您要发送到 CloudKit 的属性,然后使用结果在 CKRecord 上调用 setValuesForKeys。

您可能会发现有些属性需要为特定类型,在这种情况下,最好将您的方法设置为 toServerRecord 并创建一个 CKRecord 并将其返回。你也可以有一个 updateWithServerRecord 来设置你收到的任何东西。

【讨论】:

以上是关于NSCoding 到 CKRecord的主要内容,如果未能解决你的问题,请参考以下文章

NSCoding 到 CKRecord

使用 NSCoding 协议传递值

iCloud - NSCoding 或核心数据

从 NSUserDefaults 更改为 NSCoding

保存 PFObject NSCoding

将 iOS 应用从 NSCoding 转换为 Core Data