Xcode 在NSScrollView中显示控制台输出,在Swift中显示NSTextView

Xcode 在NSScrollView中显示控制台输出,在Swift中显示NSTextView,xcode,macos,swift,Xcode,Macos,Swift,在过去的几天里,我一直在学习斯威夫特,我似乎遇到了麻烦 我正在尝试创建一个ViewController窗口,其中有一个按钮和一个NSViewText。当我按下按钮时,应用程序会提示用户一个包含NSTEXT字段的工作表。按enter键时,NSTextField字符串保存在变量中,关闭工作表,并执行terminal命令 现在,AppDelegate中的execute命令方法使用NSPipe创建了一个管道: consoleOutput在execute方法之外,因此我尝试在ViewController中

在过去的几天里,我一直在学习斯威夫特,我似乎遇到了麻烦

我正在尝试创建一个ViewController窗口,其中有一个按钮和一个NSViewText。当我按下按钮时,应用程序会提示用户一个包含NSTEXT字段的工作表。按enter键时,NSTextField字符串保存在变量中,关闭工作表,并执行terminal命令

现在,AppDelegate中的execute命令方法使用NSPipe创建了一个管道:

consoleOutput在execute方法之外,因此我尝试在ViewController中显示它,如下所示:

编辑:更改了以前的代码,但仍然出现错误:

我希望终端输出显示在NSViewText或NSTextField或NSScrollView、NSClipView中?不知道是哪个,实时的。我无法找到操作NSTextView内容的方法,因为当我运行它时,会出现以下错误:

fatal error: unexpectedly found nil while unwrapping an Optional value

任何帮助都将不胜感激。

如果分配一个闭包(例如代码块)完全有效,您必须将其放在声明中的“=”之后,而不是放在LHS上的:之后。您基本上是试图将类型声明为静态代码块。令我惊讶的是,编译器能让您摆脱那些只抱怨IBOutlet方面本身的问题。

Ahh!所以我们不能像使用IBAction那样使用iBaoutlet!知道了。但是现在当我把它改成@IBOutlet var textView:NSTextView!使用textView.string=myDelegate.consoleOutput,我得到一个致命错误:在展开一个完全不同的可选值时意外地发现了nil。IBOutlet只是一个标记,它告诉Interface Builder和环境,当为视图控制器加载序列图像板或nib(例如…xib)时,它是一个用于接收序列图像板或nib中定义的对象引用的变量。iAction是一个标记,指示它是一个事件处理程序函数,已设置为通过Interface Builder工具调用。IBOutlet位于声明部分,不可执行,IBAction前缀仅用于函数。
textView.string = myDelegate.consoleOutput
fatal error: unexpectedly found nil while unwrapping an Optional value