xcode 12 Swift UIImageView

#swift #uiimageview #swift5 #xcode12

#swift #uiimageview #swift5 #xcode12

Вопрос:

Поскольку я открыл свой проект с помощью 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, выполнил очистку проекта и удалил производные данные

Комментарии:

1. Если все выглядит нормально: перезапустите Xcode, перезапустите Mac. Xcode — это просто программа с ошибками. Это очень грустно говорить, и раньше это было решение Top-1 для MS Windows, но, к сожалению, Mac и Xcode быстро догоняют.

2. Я бы также добавил туда шаг чистого проекта, иногда это помогает.

Ответ №1:

Вам не хватает импорта UIKit в верхней части вашего файла?

 import UIKit

class PersonViewController: UIViewController {

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

Комментарии:

1. это не связано с IBOutlet. Код должен просто компилироваться без какого-либо IBOutlet. Он отлично работает в новом проекте

2. О, извините. Это научит меня пытаться отвечать, не глядя на вопрос внимательно. Неважно.

Ответ №2:

класс PersonViewController: UIViewController {

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

Комментарии:

1. Вы должны объяснить свой ответ, а не просто указать код (даже если он работает)