【问题标题】:"This class is not key value coding-compliant for the key" error in SwiftSwift 中的“此类与键的键值编码不兼容”错误
【发布时间】:2017-12-15 09:46:03
【问题描述】:

我在 Swift 中收到此错误消息:

由于未捕获的异常“NSUnknownKeyException”而终止应用程序,原因:'[<Faceit.ViewController 0x7f8f72501e40> setValue:forUndefinedKey:]: 此类不符合键面视图的键值编码。'

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]

}

【问题讨论】:

  • 郁闷了好久,想尽快保存!
  • 错误信息很清楚。 Swift 区分大小写:faceview vs faceView
  • @vadian 哇...不可能!这很简单。
  • @vadian 我试着改成faveview,还是不行!
  • faveview (with v) 更糟糕 ;-) 仅更改名称是不够的。您必须断开 Interface Builder 中的死连接并连接正确的连接。

标签: ios swift key-value-observing


【解决方案1】:

见:Thread 1: signal SIGABRT Xcode 6.1

您必须进入 Interface Builder 并查找一个(或多个)带有警告三角形的插座(点击链接获取屏幕截图)。一旦你删除了那些坏的连接,你要么(1)准备好,因为你已经连接了你的新对象,要么(2)你需要建立新的连接,这样你就可以正确加载所有元素并且你没有警告三角形。

【讨论】:

    【解决方案2】:

    打开你的故事板>选择哪个类显示错误的ViewController>只需删除所有插座>并重新分配插座。 希望你的问题能得到解决。这不是一个大问题,错误地你有多个键或一个插座的不同名称键,特别是它的 faceview。

    【讨论】:

      【解决方案3】:

      @vadian 告诉我如何解决这个问题。它工作,更改为faceview,也重新连接到Interface Builder。 (这很重要)!

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-08-18
        • 2014-05-17
        • 1970-01-01
        • 2017-09-27
        • 1970-01-01
        • 1970-01-01
        • 2015-08-27
        • 2011-03-17
        相关资源
        最近更新 更多