我对使用Swift进行编码非常陌生,我尝试使用数据填充UIViewController内部的UITableView,但是当我使用UITableView导航到屏幕时,应用程序崩溃时出现以下错误:
2016-12-08 14:22:47.265712 Evil Quest[300:18048] Unknown class QuestCell in Interface
Builder file.
2016-12-08 14:22:47.270248 Evil Quest[300:18048] *** Terminating app due to uncaught
exception 'NSUnknownKeyException', reason: '[<UITableViewCell 0x101847600>
setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key
lblQuestName.'
我不太确定我做错了什么,而且我不确定我应该在这里发布哪些代码,所以如果你需要代码的一部分,那么解决这个问题,你可以告诉我,我会把它添加到问题中。
提前致谢。
修改
cellForRowAt功能:
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell:QuestCell = tableView.dequeueReusableCell(withIdentifier: "QuestCell", for: indexPath as IndexPath) as! QuestCell
let row = indexPath.row
cell.lblQuestName.text = quests[row].name
return cell
}
QuestCell类代码:
import UIKit
class QuestCell: UITableViewCell {
@IBOutlet weak var lblQuestName: UILabel!
override func awakeFromNib() {
super.awakeFromNib()
// Initialization code
}
override func setSelected(_ selected: Bool, animated: Bool) {
super.setSelected(selected, animated: animated)
// Configure the view for the selected state
}
}
答案 0 :(得分:2)
也许你需要注册课程。在TableViewController类的viewDidLoad方法中尝试这个。
self.tableView.registerClass(QuestCell.self, forCellReuseIdentifier: "QuestCell")
你也应该检查弱变量是否存在。 在代码的这一行放置一个断点:
cell.lblQuestName.text = quests[row].name
答案 1 :(得分:0)
转到设置了lblQuestName
标签的故事板。检查该标签是否设置了两个或更多出口。
只能连接一个插座。如果视图未与插座正确连接,则会引发此错误。