人!私はSwift 2からSwift 4に移行しようとしています。プロジェクトはBondとReactiveKitフレームワークを使用しています。 UISearchBarの拡張機能があります。だから私はこのからの移行問題に直面している:汎用パラメータ 'A'を推測できませんでした(Swift 4、Bond、ReactiveKitフレームワークはSwift 2から移行しました)
import UIKit
import Bond
import ReactiveKit
public extension UISearchBar {
public var bnd_delegate: ProtocolProxy {
return protocolProxy(for: UISearchBarDelegate.self, setter: NSSelectorFromString("setDelegate:"))
}
}
public extension UISearchBar {
public var bnd_text: DynamicSubject<UISearchBar, String?> {
let dispatcher: (PublishSubject<Void, NoError>, UISearchBar, String) -> Void = { _ in }
let selector = #selector(UISearchBarDelegate.searchBar(_:textDidChange:))
return DynamicSubject(
target: self,
signal: bnd_delegate.signal(for: selector, dispatch: dispatcher),
get: { $0.text },
set: { $0.text = $1 }
)
}
}
私はすでにいくつかの変更を行い、このコードになる:
import UIKit
import Bond
import ReactiveKit
public extension UISearchBar {
public var delegate: ProtocolProxy {
return protocolProxy(for: UISearchBarDelegate.self, setter: NSSelectorFromString("setDelegate:"))
}
public var text: DynamicSubject<String?> {
let dispatcher: (PublishSubject<Void, NoError>, UISearchBar, String) -> Void = { _,_,_ in }
let selector = #selector(UISearchBarDelegate.searchBar(_:textDidChange:))
return DynamicSubject<String?>(
target: self,
signal: delegate.signal(for: selector, dispatch: dispatcher),
get: { $0.text },
set: { $0.text = $1 }
)
}
}
現在、私はDynamicSubjectとの誤差を持っている: Generic parameter 'A' could not be inferred。そして私の「ディスパッチ」が値として取るものを確認したので、それは奇妙です:(for: Selector, dispatch: (PublishSubject< S, NoError>, A, B) -> R)。
私はディスパッチのためにいくつかの変数で試してみましたが、何も得られませんでした。私には、XcodeはPublishSubject引数の後に始まる変数を認識しないようです。
私が間違っていることを知りたい。