通过 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>