Je RECEVOIR une erreur SIGABRT:Qu'est-ce que cela signifie? "'NSUnknownKeyException', raison: ... cette classe n'est pas une valeur-clé codage-conforme pour la clé X"?
*** Terminating app due to uncaught exception 'NSUnknownKeyException', reason: '[ setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key changeToNewView.'
Ce sont mes contrôleurs de vue:
import UIKit
class PhotoShareViewController: UIViewController {
@IBOutlet weak var imageView: UIImageView!
@IBOutlet weak var contentTextView: UITextView!
@IBOutlet weak var thatTextField: UITextField!
@IBOutlet weak var thisTextField: UITextField!
var presenter: PhotoShareModuleInterface!
var image: UIImage!
@IBAction func thisUploadPhoto(_ sender: Any) {
if thisTextField.text != "" //&& thatTextField.text != ""{
performSegue(withIdentifier: "segue", sender: self)
}
}
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
var photoShareLabelViewController = segue.destination as! PhotoShareLabelViewController
photoShareLabelViewController.thisString = thisTextField.text!
// photoShareLabelViewController.thatString = thatTextField.text!
}
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
imageView.image = image
}
override var prefersStatusBarHidden: Bool {
return true
}
@IBAction func didTapCancel(_ sender: AnyObject) {
presenter.cancel()
presenter.pop()
}
@IBAction func didTapDone(_ sender: AnyObject) {
guard let message = thatTextField.text, !message.isEmpty else {
return
}
guard let messageOne = thisTextField.text, !messageOne.isEmpty else {
return
}
presenter.finish(with: image, content:message)
presenter.dismiss()
}
}
extension PhotoShareViewController: PhotoShareViewInterface {
var controller: UIViewController? {
return self
}
}
PhotoShareLabelViewController:
import UIKit
class PhotoShareLabelViewController: UIViewController {
@IBOutlet weak var thisLabel: UILabel!
@IBOutlet weak var thatLabel: UILabel!
@IBOutlet weak var thisButton: UIButton!
@IBOutlet weak var thatButton: UIButton!
var thisString = String()
// var thatString = String()
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
thisLabel.text = thisString
thisButton.setTitle(thisString, for: UIControlState.normal)
// thatLabel.text = thatString
// thatButton.setTitle(thatString, for: UIControlState.normal)
}
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
/*
// MARK: - Navigation
// In a storyboard-based application, you will often want to do a little preparation before navigation
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
// Get the new view controller using segue.destinationViewController.
// Pass the selected object to the new view controller.
}
*/
}
Je me demande pourquoi cela se passe. J'ai vérifié tous les IBOutlets et IBActions sur mon story-board et ils semblent fonctionner correctement. Le code où je pense que c'est en train de tomber dans l'erreur est ma section. Le code fonctionnait correctement jusqu'à ce que j'essaie de transmettre des données entre les deux contrôleurs de vue. J'ai fait la même chose sur un projet xcode complètement vide et le code pour le transfert de données semblait fonctionner correctement, mais quand j'essaie de le mettre dans mon espace de travail, il semble avoir un problème.
Toute aide avec cette erreur serait génial!
Dans votre Storyboard, il semble que votre 'PhotoShareViewController' ait une connexion avec' changeToNewView' qui n'est plus valide maintenant (n'existe plus). – Larme
Avez-vous essayé de rechercher 'changeToNewView' avec _Find In Project .._ (Shift + Cmd + F)? Il recherche dans le storyboard et peut trouver la connexion oubliée. – OOPer
maintenant j'ai l'erreur {asetValue: forUndefinedKey:]: cette classe n'est pas la valeur clé codage-conforme pour la clé contentTextField. } Mais je suis encore un contrôleur de vue plus loin que l'erreur d'origine –