未捕获的exception:这个类不是关键值编码兼容的

我正在学习一个名为“Swift教程iOS版:NSFileManager持久化数据”的教程 ,而且我在29分钟左右或之后遇到了一个错误。 当我尝试在iOS模拟器上运行它时,我收到错误:

终止应用程序由于未捕获的exception“NSUnknownKeyException”,原因:'[setValue:forUndefinedKey:]:这个类不是密钥值编码兼容的关键theLoadMethod。

显然根据错误,我认为这个问题是我的theLoadMethod 。 以下是我在ViewController中编写的所有代码:

 let theDocumentsFolder = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true)[0] as String let theFileName = "/theUserFile.txt" let thePath = theDocumentsFolder.stringByAppendingString(theFileName) class ViewController: UIViewController { @IBOutlet weak var nameTextField: UITextField! @IBOutlet weak var lastNameTextField: UITextField! @IBOutlet weak var ageTextField: UITextField! @IBOutlet weak var theLabel: UILabel! // The save method @IBAction func theSaveMethod(sender: AnyObject) { var name = nameTextField.text var lastName = lastNameTextField.text var age = ageTextField.text var theString = "The user's information is: \(name), \(lastName), \(age)" let theFileManager = NSFileManager.defaultManager() if !theFileManager.fileExistsAtPath(thePath) { var writeError:NSError? let fileToBeWritten = theString.writeToFile(thePath, atomically: true, encoding: NSUTF8StringEncoding, error: &writeError) if writeError == nil { println("No errors. Added: \(theString)") } else { println("Encountered an error. Error is: \(writeError)") } } else { println("File already exists") } nameTextField.resignFirstResponder() lastNameTextField.resignFirstResponder() ageTextField.resignFirstResponder() } @IBAction func theLoadMethod(sender: AnyObject) { let infoFromFile:String = String.stringWithContentsOfFile(thePath, encoding: NSUTF8StringEncoding, error: nil)! theLabel.text = infoFromFile } 

有什么我做错了吗? 据我所知,我所有的屏幕上的元素是正确的命名和链接。

这通常是由您的故事板链接到一个不存在的财产。 仔细检查故事板中所有对象的链接。 另外,如果您更改了某个属性或方法的名称或拼写,它仍然可以引用旧的。

对于那些面临同样问题的人,已经确定IBOutlets是可以的(至less在Interface Builder中看起来很好):确保你的视图控制器的模块(见附图)设置为“Current – $ (项目名)”。 在这里输入图像说明

我有一个类似的问题。 我已经改变了用户所需的字段,并重命名了几个字段。

我做了所有必要的更改parsing(删除和添加列)。 后端不是问题。

您的界面生成器源代码仍包含旧的属性。

要解决右键单击main.storyboard – >打开为 – >源代码….寻找您删除或重命名的字段…删除或修改它们…这取决于您所做的更改。

在你的情况下,你是否从别的方法重新命名了LoadMethod?

希望这可以帮助那里的人。

干杯!

只需点击鼠标右键,select源代码标签,然后删除之前存储的条目(应用程序存储以前的条目,只删除它),即可导航到Main.storyboard代码。

我也遇到了类似的错误。 在更新XCode的设置后,我通过将Build Location更改为Custom来解决问题。 只要将此字段设置为“相对于工作区”即可。