2016-11-09 1 views
0

'sourcefile에서 편집기 자리 표시 자'오류가 계속 발생합니다. 내 NSTextView의 텍스트에 액세스하려고 시도하고 있지만 올바르게 수행하지 않는 것 같습니다.OSX Swift : NSTextView에서 sourcefile 오류의 편집기 자리 표시 자

@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

우선 스토리 보드 또는 xib을 사용하는 경우 NSTextView에 아울렛을 사용할 수 없습니다. 해결 방법은 NSScrollView을 포함하는 대상 텍스트보기에 대한 출력을 만드는 것입니다. 그래서 당신은 같은 instructionField에 대한 참조를 유지 있는지 확인하고이 같은 스크롤 뷰를 포함하는 것 :

@IBOutlet weak var scrollView : NSScrollView! 

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

다음, 당신은 textStorage와 텍스트 뷰에 포함 된 텍스트에 액세스하지 않습니다. 유형 String?이다

instructionField.string 

을 다음과 같이 instructionField에 포함 된 텍스트를 얻기위한 올바른 구현입니다. 대한

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

마지막으로

최종 수정 : 당신이 instructionField에서 NSAttributedString을 얻으려면


이제, 당신은 강제 옵션을 풀기 방지하기 위해과 같이 그것을 할 수 문제가되는 줄은 다음과 같을 수 있습니다.

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

정말 고마워요! 당신의 충고가 자리를 잡았고 나는 그것으로 많은 것을 배웠습니다. –

+0

괜찮습니다! @WD – Wes