我几乎不好意思问什么是基本问题,但是我无法让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/

10-11 18:33