2017-08-08 3 views
-1

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!

+4

Dans votre Storyboard, il semble que votre 'PhotoShareViewController' ait une connexion avec' changeToNewView' qui n'est plus valide maintenant (n'existe plus). – Larme

+0

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

+0

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 –

Répondre

1

Vous avez une vue dans votre storyboard connectée à une prise de votre contrôleur. Mais vous avez supprimé la prise.

Accédez à votre story-board, contrôlez + cliquez sur la vue et supprimez la connexion en cliquant sur le x.

+0

J'ai contrôlé + cliqué sur le bouton 'Voir' sur mon plan de document pour les deux vues, mais les seules choses qui apparaissent quand je le fais sont ces trois options et aucune Ils sont remplis. Aussi, lorsque je sélectionne la vue et que je vais à l'inspecteur de connexion, cela ne ressemble à aucune connexion. –

+0

Avez-vous toujours la vue 'changeToNewView' dans votre storyboard? C'est la vue que vous devez Ctrl + cliquez et supprimez la connexion. –

+0

C'est pourquoi j'étais si confuse, je n'ai jamais eu de vue appelée 'changeToNewView' J'ai eu un morceau intitulé et j'ai changé le nom de la segue mais j'ai toujours l'erreur 'changeToNewView'. Votre aide est très appréciée! –