CloudUserDefaults 会自动将使用特定前缀的 键 的 UserDefaults
值 同步到云端。它会静默监听系统事件,检测到带有给定前缀的 UserDefaults
键 发生更改时,会自动同步该 值 。例如,如果您选择 cloud_ 作为前缀,则 UserDefaults.standard.set(1, forKey: "cloud_count")
将会在用户的所有设备上设置。
这基于 Mugunth Kumar 的优雅解决方案 MKiCloudSync
,这是一个现已存档的 Objective-C GitHub 仓库。感谢 Paul Hudson 对 MKiCloudSync
的介绍。
如果您使用的是 Xcode 11 或更高版本
文件
Swift Packages
添加 Package Dependency...
https://github.com/nbasham/CloudUserDefaults.git
将 CloudUserDefaults.swift
复制到您的项目
在 Xcode 中,单击您的项目,单击您的 target,单击 Signing & Capabilities
,单击 + Capability
,选择 iCloud。选中 Key-value storage
复选框。
注意 iCloud 事件不会发送到模拟器。
创建 CloudUserDefaults
的一个实例,将其保存在作用域内(例如在您的 AppDelegate
中),并使用您选择的前缀调用 start
,例如:
import CloudUserDefaults
...
let cloudUserDefaults = CloudUserDefaults()
cloudUserDefaults.start(prefix: "cloud_")
就是这样,只要 UserDefaults
键 以 cloud_
开头,它就会自动同步到用户的所有设备,例如:
UserDefaults.standard.set(42, forKey: "cloud_answer") // synced to cloud
UserDefaults.standard.set(42, forKey: "answer") // local
如果您想在收到来自其他设备的 user defaults 通知时订阅 CloudUserDefaults.cloudSyncNotification
,例如:
NotificationCenter.default.addObserver(self,
selector: #selector(cloudUpdate(notification:)),
name: CloudUserDefaults.cloudSyncNotification,
object: nil)
欢迎提交 pull requests。对于重大更改,请先打开一个 issue 来讨论您想要更改的内容。
请确保适当地更新测试。