gpt4 book ai didi

swift - 使用 Reactive Swift 将 View 模型与 View 绑定(bind)

转载 作者:行者123 更新时间:2023-11-30 10:39:59 25 4
gpt4 key购买 nike

我最近一直在关注reactive swift来实现它的功能。这是当前可用的 Playground 信息。

https://github.com/ReactiveCocoa/ReactiveSwift/blob/master/ReactiveSwift-UIExamples.playground/Pages/ValidatingProperty.xcplaygroundpage/Contents.swift

我面临的问题是如何将 View 模型与 UI 元素连接起来以监视它们的值。

我尝试的是模拟一个带有两个文本字段和一个按钮的简单登录屏幕。我的目标是监视这两个文本字段的 i/p,按钮状态将据此更改。

这是 View 模型

import Foundation
import ReactiveSwift

class LoginViewModel {

/*
* A property, represented by the PropertyProtocol, stores a value and notifies observers about future changes to that value. A validating protocol is nothing but a property that needs to be validated ( the validation is a lambda function)
*/
let email: ValidatingProperty<String, Error>
let password : ValidatingProperty<String,Error>

init() {
email = ValidatingProperty("") { input in

if (input.isEmpty == true || (input.isEmpty && input.isValidEmail() == false)){

return .invalid(CustomError.init(title: nil, description: "Improper Email", code: 001))
}
return .valid
}

password = ValidatingProperty("") { input in

if (input.isEmpty == true || (input.isEmpty && input.isValidPassword() == false)){

return .invalid(CustomError.init(title: nil, description: "Kindly please provide a password", code: 002))
}else {
return .valid
}

}
}

}

这是 View Controller

class ViewController: UIViewController {
@IBOutlet weak var emailField: UITextField! // Observable. Signal
@IBOutlet weak var passwordField: UITextField! // Observable. Signal

@IBOutlet weak var submitBtn: UIButton!

var viewModel: LoginViewModel!

override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.

viewModel = LoginViewModel()

}
}

当我尝试遵循 Playground 的代码 {code} viewModel.email <~ formView.emailField.reactive .continuousTextValues.skipNil(){code} 到我的示例代码中,它给我一个错误,指出类型为“UITextField?”的值没有成员“ react ”。我添加了可用的辅助函数,emailField 没有反应式类别,反之亦然。

最佳答案

我发现要做UI绑定(bind),项目需要ReactiveCocoa pod库。

关于swift - 使用 Reactive Swift 将 View 模型与 View 绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57037441/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com