ReactiveSwift 简单使用

记录 ReactiveSwift 简单使用

  1. 导入 ReactiveSwift 库
  2. 创建 TestViewModel 文件
c 复制代码
enum JKTypeType: Int {
    case cloud
    case device
    case weater
}

// 通过监听属性变化
class TestViewModel: NSObject {
    
    lazy var recordType: Property<JKTypeType> = {
        return Property(recordTypeProperty)
    }()
    
    private(set) var recordTypeProperty: MutableProperty<JKTypeType> = MutableProperty(.device)

    deinit {
        print("TestViewModel delloc")
    }
}

extension TestViewModel {
    
    func setRecordType(_ type: JKTypeType) {
        recordTypeProperty.value = type
    }
    
}
  1. 使用 TestViewModel
c 复制代码
class RegisterVC: UIViewController {
	var testViewModel =  TestViewModel()
    
    let disposes: CompositeDisposable = CompositeDisposable()

	override func viewDidLoad() {
        super.viewDidLoad()
        self.view.backgroundColor = UIColor.white
        bindViewModel()
    }

	func bindViewModel() {
         disposes += testViewModel.recordType.signal.observeValues { type in
            print("testViewModel: \(type)")
        }
    }


	@IBAction func backClick(_ sender: Any) {
        testViewModel.setRecordType(.cloud)
     }
}

	deinit {
        disposes.dispose()
    }
相关推荐
Swift社区2 天前
LeetCode - #183 Swift 实现查询未下订单的客户
算法·leetcode·swift
大熊猫侯佩3 天前
Swift 趣味开发:查找拼音首字母全部相同的 4 字成语(上)
ai·chatgpt·swift·趣味·拼音·成语·文本解析
来自于狂人3 天前
Openstack持久存储之Swift
云计算·openstack·swift
打工人你好3 天前
Swift UI开发指南:修饰器特性(modifiers)
开发语言·ui·swift
Swift社区4 天前
LeetCode - #182 Swift 实现找出重复的电子邮件
算法·leetcode·swift
货拉拉技术4 天前
货拉拉用户端SwiftUI踩坑之旅
ios·swiftui·swift
来自于狂人6 天前
Openstack持久存储-Swift,Cinder,Manila三者之间的区别
服务器·openstack·swift
ZacJi7 天前
巧用 allowsHitTesting 自定义 SignInWithAppleButton
ios·swiftui·swift
刘争Stanley9 天前
SwiftUI 是如何改变 iOS 开发游戏规则的?
ios·swiftui·swift