这个类不是密钥值编码兼容的密钥…为什么?

我将IB的输出链接到代码,如下所示。

class DiaryTableViewCell: UITableViewCell { @IBOutlet weak var TitleLabel: UILabel! @IBOutlet weak var SubTitleLabel: UILabel! @IBOutlet weak var leftImageView: UIImageView! @IBOutlet weak var rightImageView: UIImageView! } 

在这里,我正在注册课程:

 override func viewDidLoad() { self.title = "My Diary" cellNib = UINib(nibName: "TableViewCells", bundle: nil) tableView.registerClass(DiaryTableViewCell.classForCoder(), forCellReuseIdentifier: kCellIdentifier) } 

在此处输入图像描述

在此处输入图像描述

但我不断收到以下运行时错误:

***由于未捕获的exception’NSUnknownKeyException’终止应用程序,原因:’… setValue:forUndefinedKey:]:此类不是键值SubTitleLabel的键值编码兼容。

从以下代码中:

 override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { var cell = tableView.dequeueReusableCellWithIdentifier(kCellIdentifier) as DiaryTableViewCell? if (cell == nil) { tableView.registerClass(DiaryTableViewCell.classForCoder(), forCellReuseIdentifier: kCellIdentifier) cell = cellNib?.instantiateWithOwner(self, options: nil)[0] as? DiaryTableViewCell cell?.selectionStyle = .None } if (cell != nil) { println("\(x++)) Inside cell") cell!.TitleLabel.text = "Hello" cell!.SubTitleLabel.text = "World" } return cell! } 

具体来说,它发生在这里:

 cell = cellNib?.instantiateWithOwner(self, options: nil)[0] as? DiaryTableViewCell 

问题:我如何违反UILabel的密码值编码?

这在以前没有发生过… UILabel符合KVO标准。

我链接到错误的来源!

在此处输入图像描述

这是结果:

在此处输入图像描述

你不应该在tableView:cellForRowAtIndexPath自己调用instantiateWithOwner

viewDidLoad注册nib,然后dequeueReusableCellWithIdentifier将为您完成所有工作。

您的特定错误的原因是您正在调用instantiateWithOwnerself作为所有者传递,因此nib正在尝试将出口连接到您的UITableViewDataSource实现类而不是DiaryTableViewCell

有时它就像你在你的xib中创建按钮一样,你创建一个按钮并从一个按钮复制粘贴其他按钮,在这种情况下会发生此错误,是的,从xib删除的连接也可能是一个原因。

我创建了一个类似于你的TableViewCell并且遇到了同样的问题。 我有研究解决问题,但没有。 然后我删除TableViewCell中的Label并再次重新创建,通过文件所有者将其连接到TableViewCell,v..v结果是正确的。 没错。 你应该重新创建它们。