RxSwift 的结构视图模型
Posted
技术标签:
【中文标题】RxSwift 的结构视图模型【英文标题】:structure viewModel for RxSwift 【发布时间】:2020-03-17 03:50:21 【问题描述】:我正在学习 MVVM 和 RxSwift,我想绑定 UI 中的所有对象。我尝试创建视图模型但编译器弹出错误,我创建的视图模型是否错误?这是我要绑定的代码和 UI。
不能在属性初始化器中使用实例成员“BasicInfoViewModel”;属性初始化器在“self”可用之前运行
struct BasicInfoViewModel
let infos = PublishSubject<InfoResult>()
let selectedImage: Observable<UIImage>
let fullname: Observable<String>
let phoneNumber: Observable<String>
let email: Observable<String>
let placeOfBirth: Observable<String>
let dateOfBirth: Observable<String>
let religion: Observable<String>
var isValid: Observable<Bool>
return Observable.combineLatest(fullname.asObservable(), phoneNumber.asObservable(), email.asObservable(), placeOfBirth.asObservable(), dateOfBirth.asObservable(), religion.asObservable()).map $0.0.count > 0
class BasicInfoViewController: UITableViewController
var viewModel = BasicInfoViewModel()
【问题讨论】:
这是因为你在 struct 中声明了属性并且没有初始化它们,所以你不能简单地使用BasicInfoViewModel()
创建 struct 的实例,你必须传递像 BasicInfoViewModel(selectedImage: <#Observable<UIImage>#>, fullname: <#Observable<String>#>, phoneNumber: <#Observable<String>#>....
这样的初始值
【参考方案1】:
您需要在视图中构建您的 BasicInfoViewModel 并加载方法并从视图中传递输入。
【讨论】:
以上是关于RxSwift 的结构视图模型的主要内容,如果未能解决你的问题,请参考以下文章
使用 rxSwift 中的 tableView 单元将数据从视图模型传递到视图控制器