【发布时间】:2017-09-07 16:20:25
【问题描述】:
我正在尝试使用 Bond 将 UI 元素绑定到我的视图模型。当我尝试将 searchTextField 绑定到我的视图模型 searchString 时,Xcode 8.3.3 给我一个“调用中的参数标签不正确(有 'to:',预期的 'signal:')”错误。怎么了?
import UIKit
import Bond
import ReactiveKit
class SearchViewModel {
let searchString = Observable<String>("")
}
class SearchViewController: UIViewController {
@IBOutlet weak var searchTextField: UITextField!
let viewModel = SearchViewModel()
override func viewDidLoad() {
super.viewDidLoad()
bindToViewModel()
}
func bindToViewModel() {
searchTextField.reactive.text.bind(to: viewModel.searchString)
}
}
【问题讨论】:
-
您是否尝试过在 bindToViewModel 内部的函数调用中使用信号:而不是 to:?
-
我也尝试使用信号,但这给出了:“无法将 'Property
' 类型的值转换为预期的参数类型 'Signal '(又名 'Signal , NoError>')" 我正在尝试完全按照 Bond:s README 中所示的方式绑定它!? -
我将 let searchString = Observable
("") 更改为 let searchString = Observable ("") 然后它可以工作,但我不明白为什么它必须是可选。 -
我没有在这方面做太多工作,但我认为这是因为这个扩展扩展 UITextField: BindableProtocol { public func bind(signal: Signal
) -> Disposable { return reactive.text .bind(signal: signal) } } ,在 UITextField.swift 中,它需要一个可选的字符串,显然你可以进一步探索