OSX Swift:NSTextView上的源文件错误中的编辑器占位符

时间:2016-11-09 23:36:15

标签: swift macos nstextview

我不断收到'源文件中的编辑器占位符'错误。我正在尝试访问我的NSTextView文本,但我似乎没有做对。

@IBAction func cancelButton(sender: AnyObject) {

    dismissViewController(self)
}

@IBAction func saveButtonHandler(sender: AnyObject) {

    let Name: String! = nameField.stringValue;
    let Time: String! = timeField.stringValue;
    let Yum: String! = yumField.stringValue;
    let Instruct = (instructionField.textStorage as NSAttributedString!).string;
    let recipe = Recipe(name: Name, time: Time, yum: Yum, type: foodType, instructions: Instruct)

    dismissViewController(self)
}

问题来自

    let Instruct = (instructionField.textStorage as NSAttributedString!).string;

我做错了什么?

1 个答案:

答案 0 :(得分:0)

首先,如果您使用的是Storyboard或xib ,则无法将出口设为NSTextView。解决方法是为包含NSScrollView的目标文本视图创建一个Outlet。因此,请确保您保留对instructionField的引用,并且它包含滚动视图:

@IBOutlet weak var scrollView : NSScrollView!

var instructionField : NSTextView {
    get {
        return scrollView.contentView.documentView as! NSTextView
    }
}

接下来,您不会使用textStorage访问文本视图中包含的文本。获取instructionField中包含的文本的正确实现如下:

instructionField.string

类型String?

现在,如果你想从NSAttributedString获得instructionField,你可以这样做,以避免强行打开一个可选项:

guard let str = instructionField.string else { /* else */ }
guard let attrStr = str as? NSAttributedString else { /* else */ }

<强>最后

问题行的最终修复可能如下所示:

guard let Instruct = instructionField.string else { /* else */ }