【发布时间】:2015-12-09 18:10:31
【问题描述】:
iCloud的“键值存储”和CloudKit有什么区别?
一个示例场景是:如果要同步一个包含字典、数组和其他对象的相当大的数组。开发者想使用 CloudKit 还是 Key-value 存储?
【问题讨论】:
-
对我来说一个关键的区别是WatchOS不支持Key-value存储,这个很少被提及。
标签: ios icloud cloudkit key-value-store
iCloud的“键值存储”和CloudKit有什么区别?
一个示例场景是:如果要同步一个包含字典、数组和其他对象的相当大的数组。开发者想使用 CloudKit 还是 Key-value 存储?
【问题讨论】:
标签: ios icloud cloudkit key-value-store
CloudKit 用于同步真实数据记录以及资产(文件)。
iCloud 的键值存储是必不可少的NSUserDefaults,但可以跨设备同步。
所以这样想吧。如果它是一个简单的值,您可能会存储在 NSUserDefaults 中,请使用键值存储。如果它是您可能存储在 plist、数据库、文件或核心数据中的实际数据,请使用 CloudKit。
【讨论】:
NSUserDefaults 只应该用于微小的信息,例如一些字符串、数字或布尔值。它不应该用于任何“数据”,只是偏好类型信息。
我只是认为根据iCloud Design Guide 提及这一点可能会有所帮助:
应用只能在其键值存储中存储 1 MB 的数据
因此,在决定 CloudKit 还是 iCloud 键值存储时,可能需要考虑这一点。
就我而言,对于我目前正在处理的应用程序,这个限制完全没问题。但是,我想在更大的项目中,1 MB 的限制可能不够。有助于在做出决定时提前了解这一点!
希望这会有所帮助!
【讨论】:
值得注意的是,iCloud Key-Value storage 的限制比每个用户 1MB 的限制更多(在之前的其他答案中提到)。
您可以存储的数据大小有一些限制:
- 最大的整体键值存储大小为 1 MB(每个用户)
- 一个键值对不能大于 1 MB
- 您不能存储超过 1024 个键值对
- 使用 UTF-8 编码的密钥不能大于 64 字节
【讨论】: