#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. Вы должны объяснить свой ответ, а не просто указать код (даже если он работает)