我几乎不好意思问什么是基本问题,但是我无法让Bond与Swift 4一起工作。要尝试Bond,我在Xcode中创建了一个基本的单视图MacOS应用程序。我使用迦太基来获取最新的Bond框架(以及ReactiveKit和Differ框架)。我将Bond框架添加到该应用程序的嵌入式库中,并在该应用程序的默认ViewController中添加了“ import Bond”语句。在视图上,我添加了一个NSButton和一个NSTextField并将它们连接到IB中。这是ViewController代码:
import Cocoa
import Bond
class ViewController: NSViewController {
@IBOutlet var txt_1: NSTextField!
@IBOutlet var btn_1: NSButton!
override func viewDidLoad() {
super.viewDidLoad()
_ = btn_1.reactive.tap.observeNext {
print("Button tapped")
}
_ = txt_1.reactive.text.observeNext {
text in
print(text!)
}
}
btn.reactive.tap.observeNext行得到一个编译器错误:“类型'Reactive'的值没有成员'tap'”。
txt_1.reactive.text.observeNext行得到了类似的错误:“类型'Reactive'的值没有成员'text'”
显然我错过了一些东西,但是我不知道是什么。我是一个相当称职的(尽管是业余的)Swift开发人员,并且使用了其他框架,所以我知道如何使它们工作,但这让我感到困惑。任何帮助将不胜感激。
最佳答案
“你希望我工作吗?” “不,邦德先生,我希望你死!”
我并没有真正处理这些框架,但是快速的网络搜索使我进入了github page for the Bond framework,并在其中搜索源代码可以提供一些提示:
您遇到麻烦的语句似乎与ReactiveKit(Bond构建所在的层)有关,而与Bond本身无关。您可能需要import ReactiveKit
才能查看完整的界面,而不仅仅是import Bond
。
ReactiveKit公开的“信号”似乎映射到基础可可(Touch)类的功能。在UIKit中,UITextField
具有text
属性,但其AppKit类似物NSTextField
没有-而是具有stringValue
。同样,也不会tap
一个NSButton
,因此您可能需要挖掘Bond或ReactiveKit的源代码或文档以找到相应的信号。
关于swift - 如何使Bond在OS X Swift应用程序中工作?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48529180/