2017-06-09 5 views
1

私はthis tutorialに従っています。iPhoneで作業しているときにディレクトリ操作を試してみてください。このアプリはとてもシンプルです。ユーザがテキストフィールドにテキストを入力した後にボタンに触れると、そのテキストがファイルに保存されます。次にアプリケーションが起動されると、ファイルの内容がアプリケーションによって読み込まれ、テキストフィールドにあらかじめロードされます。私は正確にチュートリアルに続くが、私はアプリを実行すると、私はエラーを取得:この単純なディレクトリ処理アプリケーションが失敗するのはなぜですか?

2017-05-29 15:20:03.992119-0700 directoryHandling[293:23526] [Accessibility] ****************** Loading GAX Client Bundle **************** 
2017-05-29 15:20:04.861072-0700 directoryHandling[293:23526] *** Terminating app due to uncaught exception 'NSUnknownKeyException', reason: '[<directoryHandling.ViewController 0x100b12700> setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key saveText.' 
*** First throw call stack: 
(0x18b0f2fd8 0x189b54538 0x18b0f2ca0 0x18bb0763c 0x191586218 0x191729ff4 0x18b013f8c 0x1917289e8 0x1915891f0 0x19135353c 0x191221c44 0x191221b78 0x1912283f8 0x191225894 0x19f89f6dc 0x1912972fc 0x19149f8b4 0x1914a52a8 0x1914b9de0 0x1914a253c 0x18cc9b884 0x18cc9b6f0 0x18cc9baa0 0x18b0a1424 0x18b0a0d94 0x18b09e9a0 0x18afced94 0x19128c45c 0x191287130 0x100055864 0x189fdd59c) 
libc++abi.dylib: terminating with uncaught exception of type NSException 
(lldb) 

これは私がこれまでのアプリを持っているコードは:

import UIKit 

class ViewController: UIViewController 
{ 

    @IBOutlet weak var textBox: UITextField! 


    var fileMgr: FileManager = FileManager.default 
    var docsDir: String? 
    var dataFile: String? 

    override func viewDidLoad() { 
     super.viewDidLoad() 

     let filemgr = FileManager.default 

     let dirPaths = filemgr.urls(for: .documentDirectory, 
            in: .userDomainMask) 

     dataFile = 
      dirPaths[0].appendingPathComponent("datafile.dat").path 

     if fileMgr.fileExists(atPath: dataFile!) { 
      let databuffer = fileMgr.contents(atPath: dataFile!) 
      let datastring = NSString(data: databuffer!, 
             encoding: String.Encoding.utf8.rawValue) 
      textBox.text = datastring as? String 
     } 
    } 


    @IBAction func saveText(_ sender: UIButton) 
    { 
     let databuffer = 
      (textBox.text)!.data(using: String.Encoding.utf8) 

     fileMgr.createFile(atPath: dataFile!, contents: databuffer, 
          attributes: nil) 


    } 



    override func didReceiveMemoryWarning() { 
     super.didReceiveMemoryWarning() 
     // Dispose of any resources that can be recreated. 
    } 


} 

私にはわからないがここから行く手伝ってくれてどうもありがとう!

編集:ここでは

が、私はボタンの接続を確立した方法は次のとおりです。

enter image description here

ここインスペクタです:

enter image description here

+0

ストーリーボードのボタンの接続方法を教えてください。 – Jan

+0

@Janご協力いただきありがとうございます!ボタン接続を確立するためのスクリーンショットを追加しました。もっと情報が必要な場合は教えてください! –

+0

接続インスペクタを表示できますか?円の中の矢印のあるもの? – Jan

答えて

0

問題は、あなたが作成したということであり、 saveTextアウトレット、コードから削除しましたが、あなたはそれをinteで切断しませんでした表面ビルダー。

「x」アイコンをクリックして接続インスペクタのコンセントを抜くだけで問題ありません。

関連する問題