"This class is not key value coding-compliant for the key" Swift 中的错误
"This class is not key value coding-compliant for the key" error in Swift
我在 Swift 中收到此错误消息:
Terminating app due to uncaught exception 'NSUnknownKeyException', reason: '[<Faceit.ViewController 0x7f8f72501e40> setValue:forUndefinedKey:]:
this class is not key value coding-compliant for the key faceview.'
import UIKit
class ViewController: UIViewController {
@IBOutlet weak var faceView: FaceView! {
didSet{
updateUI()
}
}
var expression = FacialExpression(eyes: .closed, mouth: .frown) {
didSet {
updateUI()
}
}
private func updateUI() {
switch expression.eyes {
case .open:
faceView?.eyesOpen = true
case .closed:
faceView?.eyesOpen = false
case .squinting:
faceView?.eyesOpen = false
}
faceView?.mouthCurvature = mouthCurvatures[expression.mouth] ?? 0.0
}
private let mouthCurvatures = [FacialExpression.Mouth.grin:0.5,.frown: -1.0,.smile:1.0,.neutral:0.0,.smirk:-0.5]
}
参见:Thread 1: signal SIGABRT Xcode 6.1
您必须进入 Interface Builder 并寻找一个(或多个)带有警告三角形的插座(按照 link 获取屏幕截图)。一旦你删除了那些坏的连接,你就可以 (1) 准备好了,因为你已经连接了你的新对象,或者 (2) 你需要建立新的连接,这样你就可以正确加载所有的元素并且你没有警告三角形。
打开你的故事板 > Select class 显示错误的 ViewController > 只需删除所有插座 > 并重新分配插座。
希望您的问题得到解决。这不是一个大问题,错误的是你有多个密钥或不同名称的密钥用于一个插座,特别是它的 faceview。
@vadian 告诉我如何解决这个问题。它工作,更改为 faceview,也重新连接到 Interface Builder。 (这很重要)!
我在 Swift 中收到此错误消息:
Terminating app due to uncaught exception 'NSUnknownKeyException', reason:
'[<Faceit.ViewController 0x7f8f72501e40> setValue:forUndefinedKey:]:
this class is not key value coding-compliant for the key faceview.'
import UIKit
class ViewController: UIViewController {
@IBOutlet weak var faceView: FaceView! {
didSet{
updateUI()
}
}
var expression = FacialExpression(eyes: .closed, mouth: .frown) {
didSet {
updateUI()
}
}
private func updateUI() {
switch expression.eyes {
case .open:
faceView?.eyesOpen = true
case .closed:
faceView?.eyesOpen = false
case .squinting:
faceView?.eyesOpen = false
}
faceView?.mouthCurvature = mouthCurvatures[expression.mouth] ?? 0.0
}
private let mouthCurvatures = [FacialExpression.Mouth.grin:0.5,.frown: -1.0,.smile:1.0,.neutral:0.0,.smirk:-0.5]
}
参见:Thread 1: signal SIGABRT Xcode 6.1
您必须进入 Interface Builder 并寻找一个(或多个)带有警告三角形的插座(按照 link 获取屏幕截图)。一旦你删除了那些坏的连接,你就可以 (1) 准备好了,因为你已经连接了你的新对象,或者 (2) 你需要建立新的连接,这样你就可以正确加载所有的元素并且你没有警告三角形。
打开你的故事板 > Select class 显示错误的 ViewController > 只需删除所有插座 > 并重新分配插座。 希望您的问题得到解决。这不是一个大问题,错误的是你有多个密钥或不同名称的密钥用于一个插座,特别是它的 faceview。
@vadian 告诉我如何解决这个问题。它工作,更改为 faceview,也重新连接到 Interface Builder。 (这很重要)!