🌬️
Zephyr轻松在iCloud上同步UserDefaults
关于
Zephyr使用NSUbiquitousKeyValueStore通过iCloud同步您特定的keys和/或所有UserDefaults。
Zephyr自带监控功能,这使得它可以在后台同步更改时的特定keys。
有关最新更新,请参阅版本标签。
特性
- CocoaPods和SwiftPM支持
- 同步特定的
UserDefaults
keys或全部的UserDefaults
。 - 背景监控和
UserDefaults
与NSUbiquitousKeyValueStore
之间的同步 - 详细日志
安装说明
Swift版本 | 分支名称 | 是否将继续接收更新? |
---|---|---|
5.1+ | master | 是的 |
5.0 | swift5.0 | 否 |
4.2 | swift4.2 | 否 |
4.1 | swift4.1 | 否 |
3.2 | swift3.2 | 否 |
3.1 | swift3.1 | 否 |
CocoaPods
pod 'Zephyr' # Swift 5.1+
pod 'Zephyr', :git => 'https://github.com/ArtSabintsev/Zephyr.git', :branch => 'swift5.0' # Swift 5.0
pod 'Zephyr', :git => 'https://github.com/ArtSabintsev/Zephyr.git', :branch => 'swift4.2' # Swift 4.2
pod 'Zephyr', :git => 'https://github.com/ArtSabintsev/Zephyr.git', :branch => 'swift4.1' # Swift 4.1
pod 'Zephyr', :git => 'https://github.com/ArtSabintsev/Zephyr.git', :branch => 'swift3.2' # Swift 3.2
pod 'Zephyr', :git => 'https://github.com/ArtSabintsev/Zephyr.git', :branch => 'swift3.1' # Swift 3.1
Swift包管理器
.Package(url: "https://github.com/ArtSabintsev/Zephyr.git", majorVersion: 3)
手动安装
- 下载Zephyr
- 将
Zephyr.swift
复制到您的项目中。
设置
在Xcode中开启iCloud同步
在Xcode中打开您的app项目/工作空间文件
- 点击您的项目
- 点击您的目标之一
- 点击功能
- 开启iCloud同步
- 在服务下,确保选中
键值存储
- (如果有必要)对所有目标重复以上步骤
将 Zephyr 集成到您的应用中
在每次同步之前,Zephyr 会自动检查 UserDefaults 或 NSUbiquitousKeyValueStore 中的数据是否更新。为确保在新设备上进行的新应用安装并且连接到相同的 iCloud 账户时没有覆盖数据,请确保在调用 Zephyr 方法之前注册了您的UserDefaults。实现这一目标的一种简单方法是使用 UserDefaults 注册 API。
同步所有 UserDefaults
Zephyr.sync()
同步特定的键或键(可变参数选项)
Zephyr.sync(keys: "MyFirstKey", "MySecondKey", ...)
同步特定的键或键(数组选项)
Zephyr.sync(keys: ["MyFirstKey", "MySecondKey"])
为后台监控添加/删除键(可变参数选项)
Zephyr.addKeysToBeMonitored(keys: "MyFirstKey", "MySecondKey", ...)
Zephyr.removeKeysFromBeingMonitored(keys: "MyFirstKey", "MySecondKey", ...)
为后台监控添加/删除键(数组选项)
Zephyr.addKeysToBeMonitored(keys: ["MyFirstKey", "MySecondKey"])
Zephyr.removeKeysFromBeingMonitored(keys: ["MyFirstKey", "MySecondKey"])
切换 NSUbiquitousKeyValueStore 的同步方法的自动调用
Zephyr.syncUbiquitousKeyValueStoreOnChange = true // Default
Zephyr.syncUbiquitousKeyValueStoreOnChange = false // Turns off instantaneous synchronization
调试日志
Zephyr.debugEnabled = true // Must be called before sync(_:)
Zephyr.sync()
示例应用
请忽略示例应用,因为我没有在示例应用中添加任何示例代码。它只是在这个存储库中以支持 Carthage。