我一直得到'编辑器占位符在源文件'错误。我试图访问我的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;
我做错了什么?
首先,如果你正在使用故事板或xib ,你不能有一个出口到NSTextView
。解决方法是创建一个Outlet到包含NSScrollView
的目标文本视图。所以要确保你引用了instructionField
并且它包含了滚动视图
@IBOutlet weak var scrollView : NSScrollView!
var instructionField : NSTextView {
get {
return scrollView.contentView.documentView as! NSTextView
}
}
接下来,您不能使用textStorage
访问文本视图中包含的文本。获取instructionField
中包含的文本的正确实现如下:
instructionField.string
类型为String?
。
现在,如果您想从instructionField
获得NSAttributedString
,您可以这样做,以避免强制展开可选的:
guard let str = instructionField.string else { /* else */ }
guard let attrStr = str as? NSAttributedString else { /* else */ }
最后问题行的最终修复可能如下所示:
guard let Instruct = instructionField.string else { /* else */ }