我该如何解决这个问题:"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 似乎对我有所帮助。我试过:
正在清理构建文件夹
正在删除模拟器上的应用程序
正在删除派生文件夹
正在检查额外的 IBOutlets
正在删除连接并重新连接
正在重命名插座
正在检查故事板中的额外连接
调试 viewDidLoad() 函数
这是我的代码:
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 的新名称。
我即将完成将我的代码从 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 似乎对我有所帮助。我试过:
正在清理构建文件夹
正在删除模拟器上的应用程序
正在删除派生文件夹
正在检查额外的 IBOutlets
正在删除连接并重新连接
正在重命名插座
正在检查故事板中的额外连接
调试 viewDidLoad() 函数
这是我的代码:
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 的新名称。