Jam*_*jon 2 xcode uiimageview swift4.2
我即将将我的代码从 Objective-C 翻译成 Swift,我开始将视图控制器类切换到 Swift。我设法解决了视图控制器的大部分问题,但我的一个视图控制器不断收到此错误。
当它崩溃时:“线程 1 信号 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.'
注意:在这种情况下,“背景”是一个 UIImageView Outlet。
我经历了多个堆栈 over flow 解决方案,但似乎没有一个对我有帮助。我试过了:
清理构建文件夹
删除模拟器上的应用程序
删除派生文件夹
检查额外的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:]:
所以你需要把storyboard中这个view controller的class设置为真正拥有该background属性的view controller的class 。
很可能您已经正确设置了它,但它仅适用于 Objective-C。如果您进入身份检查器并删除该类,然后按回车键,然后再次进入该类并按回车键,您将看到现在身份检查器看到我们应该从 Swift 模块中获取这个类,事情将开始在 Swift 中工作。
基本上根本原因可能是 Swift 的名称修改。名为 MyClass 的 Objective-C 类实际上称为 MyClass,但名为 MyClass 的 Swift 类不是。删除名称并重新输入它会显示 Objective-C 类的新名称。
| 归档时间: | 
 | 
| 查看次数: | 5820 次 | 
| 最近记录: |