我该如何解决这个问题:"this class is not key value coding-compliant for the key imageview"?

How can I fix this: "this class is not key value coding-compliant for the key imageview"?

我即将完成将我的代码从 Objective-C 转换为 Swift,并且我开始将视图控制器 类 切换为 Swift。我设法解决了视图控制器的大部分问题,但我的其中一个视图控制器一直收到此错误。

崩溃时:"Thread 1 signal sigabrt"

错误日志:

Terminating app due to uncaught exception 'NSUnknownKeyException', 
reason: '[<UIViewController 0x7fd98fc65ee0> setValue:forUndefinedKey:]: 
this class is not key value coding-compliant for the key background.'

注意:"background" 在本例中是一个 UIImageView Outlet。

我经历了多个堆栈溢出解决方案,none 似乎对我有所帮助。我试过:

这是我的代码:

IBOutlet var background: UIImageview!

override func viewDidLoad() {
    super.viewDidLoad()

    let image: UIImage = UIImage(named: UserDefaults.standard.string(forKey: "Background")!)!
    background.image = image
    ...
}

错误信息中揭示了问题:

[UIViewController 0x7fd98fc65ee0> setValue:forUndefinedKey:]:

所以你需要在故事板中将这个视图控制器的 class 设置为具有 background 属性 的真实视图控制器的 class。

很可能您已经正确设置了此设置,但它仅在 Objective-C 中有效。如果您进入身份检查器并删除 class,然后点击 return,然后再次输入 class,然后点击 return,您会看到现在Identity inspector 看到我们应该从 Swift 模块中获取这个 class,并且事情将在 Swift 中开始工作。

基本上根本原因可能是 Swift 的名称修改。名为 MyClass 的 Objective-C class 确实称为 MyClass,但名为 MyClass 的 Swift class 则不是。删除名称并重新输入显示 Objective-C class 的新名称。