Как я могу решить "Не удается присвоить значение типа 'UIImageView?' напечатать "UIImage?" - PullRequest
0 голосов
/ 09 июля 2019

Отказ от ответственности: я изменил / изменяю проект, который мой наставник скачал из Интернета.

Это мой домашний проект: на экране 3 файла cookie, пользователь нажимает кнопку «Узнать мое состояние», которая выбирает один из трех файлов cookie случайным образом (с помощью свойства .randomElement()).Откроется окно, отображающее это случайное изображение cookie.Однако я не могу установить изображение в окне на результат свойства .randomElement()

. Я уже пытался преобразовать UIImage в UIImageView и наоборот, но теперь я в своем уме.

Вот глобальный класс формируемого случайного элемента

class globalElements {
    static let cookiesArray = [globalElements.numberOne,        
        globalElements.numberTwo, globalElements.numberThree]
    static let randomlyAssignedCookie = cookiesArray.randomElement()

}


//And here is where the title error shows up:


let randomlyChosenFortune: UIImageView = {
    let image = UIImageView()
    image.translatesAutoresizingMaskIntoConstraints = false
    image.clipsToBounds = true
    image.contentMode = .scaleAspectFit
    image.image = globalElements.randomlyAssignedCookie //(error: Cannot assign value of type 'UIImageView?' to type 'UIImage?')//

    return image
}()

Ответы [ 2 ]

2 голосов
/ 09 июля 2019

Вы должны установить UIImage на UIImageView 'UIImage.

Возможно, ваш тип globalElements.randomlyAssignedCookie не UIImage.

Если вы хотите установить изображениеUIImageView Вы должны использовать UIImage тип.

Только одни и те же типы могут быть синхронизированы друг с другом

Я надеюсь, что это делаетразница.

Наслаждайтесь.

1 голос
/ 09 июля 2019

Вы пытаетесь присвоить UIImageView типу UIImage.Это две разные вещи.Для начала я бы назвал «изображение» при назначении randomlyChosenFortune для «imageView».UIImageView является подклассом UIView, т.е. он может быть добавлен в иерархию представления.UIImage это просто изображение.У него нет таких вещей, как рамки, радиусы углов, ширина границ и т. Д.

Это означает, что, когда вы действительно хотите добавить UIImage, который вы создали в коде, к вашим представлениям, вам нужно сделатьИтак:

  1. Создание экземпляра UIImageView
  2. Установка необязательного свойства image UIImageView для UIImage
  3. ДобавьтеUIImageView к вашей иерархии представлений

Вот хороший справочник для изучения различий: Разница между UIImage и UIImageView

Справочник по UIImage: https://developer.apple.com/documentation/uikit/uiimage

UIImageView: https://developer.apple.com/documentation/uikit/uiimageview

Понимание подклассов UIView: https://developer.apple.com/documentation/uikit/uiview & https://medium.com/@fvaldivia/view-hierarchy-in-swift-ios-9f86a7479cb5

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...