【问题标题】:valueForUndefinedKey:]: this class is not key value coding-compliant for the key imgSelect SwiftvalueForUndefinedKey:]:这个类对于键 imgSelect Swift 不兼容键值编码
【发布时间】:2014-08-09 22:33:06
【问题描述】:

接收错误:valueForUndefinedKey:]:此类与键 imgSelect 的键值编码不兼容

我有一个可编辑的表格视图。选择单元格时,它会带您编辑信息。一切都很好,除了图像。用户可以保存图像,图像显示在tableview中,但是当返回编辑时,它会崩溃。这是写得不好的代码:

无需尝试重​​新加载要编辑的图像,其他一切正常。图像保存到数据库并显示在tableview中..

var existingItem: NSManagedObject!

override func viewDidLoad() {

    super.viewDidLoad()

// Reload data to edit
if existingItem {

    txtPTitle.text = project
    txtPDesc.text = desc
    txtSDate.text = sdate
    txtEDate.text = edate

}

但是当我在编辑表格单元格时添加以下内容以加载图像

// Reload data back into form
if existingItem {

    txtPTitle.text = project
    txtPDesc.text = desc
    txtSDate.text = sdate
    txtEDate.text = edate

    var data: NSManagedObject = NSManagedObject()
    let imageData:NSData = data.valueForKeyPath("projectImage") as NSData
    let projectImage:UIImage = UIImage(data: imageData)
    println("we have an image")

    imgSelect.image = projectImage

}

它会因以下错误而崩溃。

'NSUnknownKeyException', reason: '[<_NSZeroData 0x7fe7f1c3b020> valueForUndefinedKey:]: this class is not key value coding-compliant for the key imgSelect.'

【问题讨论】:

  • 你在哪里定义了imgSelect?如果在引用属性时包含self.,代码会更清晰。否则当其他人试图阅读它时会感到困惑。
  • @Rob Napier imSelect 是 IBOutlet 中定义的 UIImageView。我为糟糕的代码道歉。
  • 您能否包括您对imgSelect 的定义以及您定义此var 的类的信息?您的错误是说NSZeroData 类型的某些对象没有名为imgSelect 的属性。这并不是说您的视图控制器没有该属性,而是NSZeroData 没有。这很好奇。

标签: ios objective-c swift nsdata xcode6


【解决方案1】:

我怀疑你实际上并没有在 Interface Builder 中绑定 imgSelect

它是否真的在imgSelect.image = projectImage 行崩溃,或者可能更早(例如在NIB 加载期间)? imgSelect 正确吗?在 beta 4 或 beta 5 中,它们改变了 IBOutlets 的定义方式,你应该确保从那时起你已经完成了彻底的清理和重建(否则你可能会得到错误的对象,如你所见)。

【讨论】:

  • 其实imgSelect是绑定在IB里面的。就像我说的。用户可以在表单中选择并保存图像,它被保存到数据库中,当查看 tableview 时,图像就在那里。但是,当用户选择要编辑的单元格时,图片不存在。这就是问题所在。
猜你喜欢
  • 2015-09-13
  • 2017-08-07
  • 2016-11-13
  • 1970-01-01
  • 2015-05-08
  • 1970-01-01
  • 2015-06-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多