ios - for - xcode features
Excepción no detectada: esta clase no es un valor clave que cumple con la codificación (5)
Estaba teniendo un problema similar. Cambié los campos requeridos por el usuario y cambié el nombre a un par de campos.
Realicé todos los cambios necesarios en el análisis sintáctico (columnas descartadas y agregadas). El back-end no fue el problema.
El código fuente del constructor de interfaz todavía contiene los atributos anteriores.
Para resolver, haga clic con el botón secundario en main.storyboard -> Abrir como -> Código fuente ... busque los campos que eliminó o cambió de nombre ... elimínelos o modifíquelos ... depende de los cambios que haya realizado.
En su caso, ¿cambió el nombre de TheLoadMethod de otra cosa?
Espero que esto ayude a alguien por ahí.
¡Aclamaciones!
Esta pregunta ya tiene una respuesta aquí:
Estoy siguiendo un tutorial titulado "Swift Tutorial para iOS: NSFileManager Persisting Data" , y he encontrado un error alrededor o después de la marca de 29 minutos. Cuando intento ejecutarlo en el simulador de iOS, recibo el error:
Aplicación de terminación debido a la excepción no detectada ''NSUnKeyKeyException'', razón: ''[setValue: forUndefinedKey:]: esta clase no es un valor clave que cumple con la codificación para la clave theLoadMethod''.
Obviamente basado en el error, estoy pensando que el problema es my theLoadMethod
. Aquí está todo el código que escribí como parte de este proyecto en 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
}
¿Hay algo que estoy haciendo mal? Por lo que sé, todos mis iOS en elementos de la pantalla están nombrados y vinculados correctamente.
Esto normalmente es causado por un enlace de su guión gráfico a una propiedad no existente. Revisa todos los enlaces de los objetos en tu guión gráfico. Además, si ha cambiado el nombre o la ortografía de una propiedad o método, aún puede tener una referencia a la anterior.
Para aquellos que enfrentan el mismo problema y ya se han asegurado de que los IBOutlets estén bien (al menos se ven bien en Interface Builder): asegúrese de tener el módulo (vea la imagen adjunta) para su controlador de vista configurado en "Current - $ (NOMBRE DEL PROYECTO)".
Simplemente navegue hasta su código Main.storyboard haciendo clic con el botón derecho y seleccionando la pestaña del código fuente, luego elimine la entrada anterior que está almacenada (la aplicación almacena las entradas anteriores, simplemente elimine eso).
También me encontré con un error similar. Resolví el problema cambiando la ubicación de compilación a personalizada en la configuración de XCode después de actualizarlo. Simplemente configure este campo como ''Relativo al espacio de trabajo'' y listo.