2016-11-09 3 views
0

Я продолжаю получать ошибку «Заполнитель в исходном файле». Я пытаюсь получить доступ к тексту моего NSTextView, но я, похоже, не делаю это правильно.OSX Swift: Заместитель редактора в ошибке исходного файла в 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; 

Что я делаю не так?

ответ

0

Прежде всего, , если вы используете раскадровки или xibs, вы не можете иметь выход на NSTextView. Обходной путь состоит в том, чтобы создать Outlet для целевого текстового представления, содержащего NSScrollView. Поэтому убедитесь, что вы держите ссылки на 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 */ } 
+0

Большое вам спасибо! Твой совет был на месте, и я многому научился у него. –

+0

Нет проблем! @WD – Wes

Смежные вопросы