2016-07-27 7 views
2

Ello!私は言語としてswiftを使用して、Mac用のメモアプリに取り組んでいます。私は現在、セーブとロードの機能に取り組んでおり、エラーを回避して実行しています。修正方法がわかりません。問題のあるコードは次のとおりです。Xcode 7 Swift 2エラー:スレッド1:EXC_BAD_INSTRUCTION(コード= EXC_1386_INVOP、SUBCODE = 0X0)

import Cocoa 

class NoteViewController: ViewController { 

    @IBOutlet weak var notefield: NSTextField! 
    @IBOutlet weak var savenamefield: NSTextField! 
    @IBOutlet weak var loadnamefield: NSTextField! 

    @IBAction func save(sender: AnyObject) { 
     // The line below gets the error: Thread 1: EXC_BAD_INSTRUCTION (code=EXC_1386_INVOP, subcode=0x0 
     NSUserDefaults.standardUserDefaults().setObject(notefield.stringValue, forKey: savenamefield.stringValue) 
    } 


    @IBAction func load(sender: AnyObject) { 
     var name = loadnamefield.stringValue; 
     var lnote = NSUserDefaults.standardUserDefaults().objectForKey(name) 
     notefield.stringValue = lnote as! String 
    } 

    override func viewDidLoad() { 
     super.viewDidLoad() 
     // Do view setup here. 
    } 

} 

何が間違っていますか?

+0

これは大いに愛されている*予期しない見つかったnil ...エラーです。アウトレットはInterface Builderで接続されていますか? 2番目の考え: 'lnote'は' load'メソッドの 'nil'です。ちなみに、 'NSUserDefaults'には専用の' stringForKey'メソッドがあります。 – vadian

+0

私はstringforkeyについて知らなかった。私はそれを試みるかもしれない。推薦してくれてありがとう! –

+0

ドキュメントを読むことに傷つくことはありません;-)発見する秘密がいくつかあります... – vadian

答えて

0

私はそれを理解しました。いくつかのテストでは、notefield.stringValueをコードに追加するまで、すべてが機能していることがわかりました。次に、これが別のウィンドウであることに気付きました。コードは3つの異なるウィンドウをカバーしており、そのうち2つはポップアップです。 notefieldは私がメインウィンドウのコードの中に持っていた唯一の要素です。私はすべての要素を同じウィンドウに移動し、全体を再コード化しました。

私はこのコードをガイドラインとしてのみ提供していますので、あらかじめご了承ください。与えられた助けをありがとう。

関連する問題