通过 iCloud 键值存储同步设置。
类似于 iOS14 中的 @AppStorage
和 @SceneStorage
,这个 @CloudStorage
属性包装器可以在应用重启后持久保存数值。除此之外,它还能使用 iCloud 键值存储 在设备之间同步这些数值。
点击 File -> Add Packages... 并粘贴此 GitHub 仓库的 URL 以将其添加到你的项目。
这些数值将在你的应用用户设备之间同步
@CloudStorage("readyForAction") var readyForAction: Bool = false
@CloudStorage("numberOfItems") var numberOfItems: Int = 0
@CloudStorage("orientation") var orientation: String?
另请参阅此仓库中的示例应用。
与键值存储本身相同的注意事项也适用
键值存储适用于离散值,例如偏好设置、设置和简单的应用状态。
使用 iCloud 键值存储来存储少量数据:股票或天气信息、位置、书签、最近文档列表、设置和偏好设置以及简单的游戏状态。每个提交到 App Store 或 Mac App Store 的应用都应该利用键值存储。
摘自 Apple 关于 选择合适的 iCloud 存储 API 的文档
通常,键值存储并非旨在作为通用同步服务。如果你需要任何高级功能来防止数据丢失,请考虑改用 CloudKit。
要在不同的应用(来自同一团队)之间,甚至在应用及其扩展之间同步相同的键值项,请按照以下步骤操作
例如,如果你的主应用的 bundle identifier 是 com.example.my-app
,并且其 .entitlements
文件有以下条目
<key>com.apple.developer.ubiquity-kvstore-identifier</key>
<string>$(TeamIdentifierPrefix)$(CFBundleIdentifier)</string>
请确保在其他应用或扩展中配置 .entitlements
文件,如下所示
<key>com.apple.developer.ubiquity-kvstore-identifier</key>
<string>$(TeamIdentifierPrefix)com.example.my-app</string>
另请参阅:为多个应用配置通用的 iCloud 容器 (developer.apple.com)
Nonstrict B.V., Tom Lokhorst & Mathijs Kadijk, 根据 MIT 许可证 发布