这是什么意思? “'NSUnknownKeyException',原因:...这个类不是密钥X的编码兼容密钥值”?
我recieving一个SIGABRT错误:这是什么意思? “'NSUnknownKeyException',原因:...这个类不是密钥X的编码兼容密钥值”?
*** Terminating app due to uncaught exception 'NSUnknownKeyException', reason: '[ setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key changeToNewView.'
这些都是我的视图控制器:
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.
}
*/
}
我想知道为什么会这样。我在故事板上检查了所有的IBOutlets和IBActions,他们似乎工作正常。我认为它出现错误的代码是我的segue。代码工作正常,直到我试图在两个视图控制器之间传递数据。
我做同样的事情在一个完全空的Xcode项目和传递数据的代码似乎正常工作,但是当我试图把它放在我的实际工作区好像有问题。
与此错误任何帮助将是真棒!
你在你的故事板连接到您的控制器出口的视图。但是你删除了这个插座。
转到您的故事板,控制+点击查看和删除通过点击X之间的连接。
我控制+点击我的文档大纲上的'查看'按钮的两个意见,但唯一的事情弹出时,我这样做是三个选项,没有他们被填充。当我选择视图并转到连接检查器时,它看起来不像任何连接。 –
您的故事板中是否仍有名为'changeToNewView'的视图?这是你必须按CTRL +点击并删除连接的观点。 –
这就是为什么我如此如此困惑,我从来没有任何视图叫做'changeToNewView'我有一个名为segue的标题,我改变了segue的名字,但我仍然得到'changeToNewView'错误。您的帮助非常感谢! –
在你的故事板,似乎你的'PhotoShareViewController'有'changeToNewView'连接现在是无效的(不存在了)。 – Larme
您是否尝试过使用_Find在Project中搜索'changeToNewView' .._(Shift + Cmd + F)?它在故事板内搜索并可能找到被遗忘的连接。 – OOPer
现在我有错误{asetValue:forUndefinedKey:]:此类不是关键字值,它们对于关键字contentTextField而言是符合编码的。 }但我是一个更多的视图控制器比原始错误 –