ObservableKit 1.0.4

ObservableKit 1.0.4

John Lima 维护。



ObservableKit

GitHub release Build Status CocoaPods GitHub repo size License Platform Donate

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 文件。