gpt4 book ai didi

swift - Swift Bond 中 model 和 viewModel 的绑定(bind)

转载 作者:可可西里 更新时间:2023-11-01 01:25:55 25 4
gpt4 key购买 nike

我正在使用 Swift Bond 将 View 与 viewModel 进行双向绑定(bind)。这是通过 bidirectionalBind 实现的。

问题是:将模型与 viewModel 绑定(bind)的常见做法是什么,更具体地说,模型如何知道 viewModel 中所做的更改。在 ReactiveCocoa 中有 RACChannel 可以做到这一点,因此您可以在不更改模型属性类型的情况下绑定(bind) viewModel 和模型。

主要目标是保持模型非常简单,仅使用 String、Int、Date 等基本类型,并将 Observable 和 Property 类型移至 viewModel。

插图:

import Bond
import ReactiveKit

struct Person {
var name: String
var age: Int
var birthdate: Date
}

struct PersonViewModel {
fileprivate var person: Person

var name: Observable<String>
var age: Observable<Int>
var birthDate: Observable<Date>

init(person: Person) {
self.person = person

// what should go here in order to bind properties???
}
}

最佳答案

为了将您的 ViewModelModel 双向绑定(bind)在一起,您需要在 Person Model< 中具有可绑定(bind)属性 这听起来像是您想避免的。无法绑定(bind)到纯 Int、String 或 Date 类型。

您可以修改您的 Model 以使用可绑定(bind)属性,或者您可以构建一个解决方案,让您的 Model 通过一些方式与您的 ViewModel 交互可观察的抽象类型。

biDirectionalBind 通常用于将 ViewModel 层中的属性与 View 层绑定(bind),以便将用户交互的更新传递回 ViewModel,例如:

let name = Property<String>("Fred")
let textField = UITextField()
name.bidirectionalBind(to: textField.bnd_text)

关于swift - Swift Bond 中 model 和 viewModel 的绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41489609/

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