ObservableKit
ObservableKit 是在 Swift 中观察值的最佳方式。
❗️ 要求
- iOS 9.3+
- Swift 5.1+
⚒ 安装
Swift 包管理器
ObservableKit 通过 SPM 提供。要安装它,按照以下步骤进行
Open Xcode project > File > Swift Packages > Add Package Dependecy
之后,在字段中输入 url:https://github.com/thejohnlima/ObservableKit.git
CocoaPods
ObservableKit 通过 CocoaPods 提供。要安装它,只需要将以下行添加到您的 Podfile 中
pod 'ObservableKit'
并运行 pod install
🎓 如何使用
在您的 swift 文件中导入库
import ObservableKit
下载图片示例
在您的 View Model 中配置 ObservableKit
let observable: OKObservable<OKState<Data, Error>> = OKObservable(OKState.loading)
func fetchImage() {
let url = URL(string: model.image)!
observable.value = .loading
URLSession.shared.dataTask(with: url, completionHandler: { data, _, error in
if let error = error {
self.observable.value = .errored(error: error)
return
}
self.observable.value = data != nil ? .load(data: data!) : .empty
}).resume()
}
然后,在您的视图控制器中调用观察者
@IBOutlet weak var imageView: UIImageView!
private let viewModel = ViewModel()
override func viewDidLoad() {
super.viewDidLoad()
addObservers()
}
private func addObservers() {
viewModel.observable.didChange = { [weak self] status in
DispatchQueue.main.async {
switch status {
case .load(data: let data):
print("✅ fetch image with succss")
let image = UIImage(data: data)
self?.imageView.image = image
case .loading:
print("🚀 loading data...")
case .errored(error: let error):
print("❌ get an error: \(error)")
case .empty:
print("❌ data not found")
}
}
}
}
private func loadImage() {
viewModel.fetchImage()
}
🙋🏻 Communication
- 如果发现了错误,请打开一个问题。
- 如果有功能请求,请打开一个问题。
- 如果您想贡献,请提交一个 pull request。👨💻
📜 许可
ObservableKit 采用 MIT 许可证。更多信息请参阅 LICENSE 文件。