【发布时间】:2014-12-08 19:23:56
【问题描述】:
我正在关注a tutorial titled "Swift Tutorial for iOS : NSFileManager Persisting Data",我在 29 分钟左右或之后遇到了一个错误。当我尝试在 iOS 模拟器上运行它时,我收到错误:
由于未捕获的异常“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
}
我做错了什么吗?据我所知,我在屏幕上的所有 iOS 元素都已正确命名和链接。
【问题讨论】:
-
这通常是由您的故事板链接到不存在的属性引起的。仔细检查故事板中对象的所有链接
-
@Paulw11 我该怎么做?只需查看情节提要中每个对象名称的名称,并确保它们与我的 IBOutlet 声明相匹配?
-
选择您的每个控件、文本字段等,并在检查器窗口中检查它们的引用出口。
-
@Paulw11。只有 6 个元素:3 个文本字段、2 个按钮和 1 个标签。每个参考插座看起来都不错。按钮被声明为 IBAction 函数,其余的是 IBOutlets...
-
您可以控制或右键单击您的情节提要并作为源代码打开并使用 cmd-f 搜索加载方法。有些东西指的是剧院属性名称
标签: ios swift cocoa-touch nib nsunknownkeyexception