在Swift中的NSScrollView和NSTextView中显示控制台输出

时间:2015-03-27 18:47:03

标签: xcode macos swift

过去几天我一直在学习Swift,而且我似乎已经成功了。

我正在尝试创建一个ViewController窗口,其中有一个按钮和一个NSViewText。当我按下按钮时,应用会提示用户使用NSTextField的工作表。按Enter键时,NSTextField字符串将保存在变量中,表单将关闭,并执行终端命令。

现在,AppDelegate中的执行命令方法创建了一个NSPipe的管道:

let cmd = NSTask()
...
let pipe = NSPipe()
cmd.standardOutput = pipe
cmd.launch()
let data = pipe.fileHandleForReading.readDataToEndOfFile()
let output: String = NSString(data: data, encoding: NSUTF8StringEncoding)!

var consoleOutput = output
return output

consoleOutput不在执行方法之内,因此我尝试在ViewController中显示它,如下所示:

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

textView.string = myDelegate.consoleOutput

我希望终端输出显示在NSViewText(或NSTextField,或NSScrollViewNSClipView?不确定哪一个?实时。我不能做的是找到一种方法来操纵NSTextView的内容,因为当我运行它时,我收到以下错误:

fatal error: unexpectedly found nil while unwrapping an Optional value

任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:0)

如果分配一个闭包(例如代码块)会起作用,你必须把它放在' ='之后。在声明中,而不是在LHS之后:您基本上试图将该类型声明为静态代码块。我对编译器感到惊讶,它让你逃脱了所有人只抱怨IBOutlet方面本身。