【问题标题】:xcode 12 + Swift + UIImageViewxcode 12 + 斯威夫特 + UIImageView
【发布时间】:2020-09-21 18:30:48
【问题描述】:

自从我使用 xcode 12 打开我的项目后,我遇到了以下问题:

import UIKit

class PersonViewController: UIViewController {

override func viewDidLoad() {
  super.viewDidLoad()
  
  let imageView = UIImageView()
  let carImage = UIImage(named: "carImg")
  imageView.image = carImage
}
}

我得到的错误是:“引用实例方法'图像没有完全匹配” 编译器基本上没有识别出 UIImageView 有一个名为“image”的属性或者没有导入 UIKit。

如果我创建一个新项目,它编译得很好,所以我猜这是某种在 xcode11 中很好但在 xcode12 中不好的设置。

注意:这是一个 Objective C 项目,在 Swift 中有一些类。

注意:重新启动我的 mac,清理项目并删除派生数据

【问题讨论】:

  • 如果一切正常:重启 Xcode,重启 Mac。 Xcode 只是一个有 bug 的程序。说起来很遗憾,曾经是 MS Windows 的 Top-1 解决方案,但不幸的是,Mac 和 Xcode 正在迅速追赶。
  • 我还会在其中添加一个 Clean 项目步骤,有时这样可以解决问题。

标签: swift uiimageview swift5 xcode12


【解决方案1】:

您是否缺少文件顶部的 UIKit 导入?

import UIKit

class PersonViewController: UIViewController {

    
    override func viewDidLoad() {
      super.viewDidLoad()
      
      let imageView = UIImageView()
      let carImage = UIImage(named: "carImg")
      imageView.image = carImage
    }
}

【讨论】:

  • 这与 IBOutlet 无关。代码应该在没有任何 IBOutlet 的情况下简单地编译。它在新项目中运行良好
  • 哦,对不起。这将教会我在不认真地看问题的情况下尝试回答。没关系。
【解决方案2】:

类 PersonViewController: UIViewController {

@IBOutlet weak var imageView: UIImageView! //This line is important and must not be excluded

【讨论】:

  • 你应该解释你的答案,而不仅仅是提供代码(即使它确实有效)
猜你喜欢
  • 2017-07-22
  • 2017-03-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-02-08
  • 2017-11-13
  • 2015-08-19
  • 2014-09-11
相关资源
最近更新 更多