如何将字典保存到cloudkit

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何将字典保存到cloudkit相关的知识,希望对你有一定的参考价值。

我正在尝试创建体育比赛的数据库,例如,在足球比赛中,我不仅想保存进球数,而且要保存进球时间。当然,最简单的方法是使用键值对,但我使用的是CloudKit,但看不到保存字典的方法。可以这样做吗?

答案

我认为,为此应用提供最大灵活性的解决方案是创建另一个recordType。因此,除了您的recordType“游戏”之外,您还将拥有recordType“目标”。在“目标”记录类型中,您将创建一个CKReference字段,指向其所属的“游戏”。然后,您将能够为“目标”记录类型创建查询,其中引用指向特定游戏。然后,您可以根据该查询的结果计算分数。

另一种可能更易于维护的解决方案是,仅将字典转换为字符串,然后将整个字典放在一个文本字段中。例如,您可以使用NSJSONSerialization将其转换为json字符串。

另一答案

您可以在CloudKit中使用NSKeyedArchiver和字段类型Bytes

将字典转换为数据:

let dict = [String: Set<String>]()
// convert dictionary to data object
let data: Data = NSKeyedArchiver.archivedData(withRootObject: dict)
// save to CloudKit ...

从数据转换为字典:

// let data: Data = object from CloudKit
let dict: [String: Set<String>] =  NSKeyedUnarchiver.unarchiveObject(with: data) as? [String: Set<String>]

以上是关于如何将字典保存到cloudkit的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 CloudKit API 将 PHLivePhoto 保存到 iCloud

如何使用 CloudKit 将条目从公共数据库保存到私有数据库

从 CloudKit 获取并保存到 CoreData

将记录保存到 CloudKit 时应用程序崩溃

将多个字段添加到 CloudKit 中的同一记录名称行

用于从 cloudkit 检索单列的代码模式/片段