2017-06-09 28 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

您能否顯示Connections檢查器?圓圈中有箭頭的那個? – Jan

回答

0

的問題是,您創建一個saveText outlet,從代碼中刪除它,但你沒有斷開它在inte rface建造者。

只需通過單擊「x」圖標斷開連接檢查器中的插座,它就可以工作。

相關問題