Swift中的“此类不符合键值编码规范”的错误

5

我在Swift中一直收到这个错误信息:

由于未捕获的异常 'NSUnknownKeyException',原因是:'[<Faceit.ViewController 0x7f8f72501e40> setValue:forUndefinedKey:]:此类不支持键值编码,无法为关键字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]

}

我已经感到沮丧很久了,想尽快解决它! - BlueJapan
3
错误信息很清楚,Swift 是区分大小写的:faceviewfaceView - vadian
@vadian 哇...不会吧!那太简单了。 - BlueJapan
@vadian 我尝试更改为faveview,但它仍然不起作用! - BlueJapan
1
"faveview"(带有“v”)仍然不太好;-) 仅更改名称是不够的。您必须在Interface Builder中断开死连接并连接正确的连接。 - vadian
3个回答

6
请查看:Xcode 6.1中的Thread 1: signal SIGABRT
您需要进入Interface Builder并查找一个或多个带有警告三角形的outlet(请参阅链接以获取屏幕截图)。一旦删除了这些错误连接,您就可以(1)直接开始使用,因为您已经连接了新对象,或者(2)需要建立新连接,以便正确加载所有元素并消除警告三角形。

0

打开你的Storyboard > 选择类显示错误的ViewController > 只需删除所有的outlet > 然后重新分配outlet。希望你的问题能够解决。这不是一个大问题,可能是因为你错误地使用了多个键或不同名称的键来表示一个outlet,特别是它的faceview。


0

@vadian 已经告诉我如何解决这个问题了。它起作用了,改为 faceview,并重新与 Interface Builder 连接(这很重要)!


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接