Swift / Xcode - развертывание необязательного значения - PullRequest
0 голосов
/ 04 февраля 2020

Когда я пытаюсь развернуть "var window", используя "!" он показывает, что необязательное значение равно nil.

Неустранимая ошибка: неожиданно обнаружен ноль при развертывании необязательного значения

var window: UIWindow?

// image to be animated
let backgroundImg = UIImageView()


func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
    // Override point for customization after application launch.

    // creating imageView to store background image "mainbg.jpg"
    backgroundImg.frame = CGRect(x: 0, y: 0, width: 1000, height: 1000)
    backgroundImg.image = UIImage(named: "mainbg.jpg")
    self.window!.addSubview(backgroundImg)

    return true
}

Кто-нибудь еще сталкивался с этой проблемой и ей удалось исправить это?

Я использую XCODE версии 11.3.1 с SWIFT 5. Это

Ответы [ 3 ]

0 голосов
/ 04 февраля 2020

Как уже упоминалось в комментариях, ваша необязательная переменная UIWindow не была назначена, поэтому по умолчанию она все еще равна нулю. Возможно, вам нужен другой шаблон проекта, который настроит для вас окно.

Что касается "!" оператор, как правило, вы должны стараться избегать его использования, потому что если ваш опциональный не назначен или ноль, он всегда будет выдавать исключение. Читайте о Опционально в руководстве Swift .

0 голосов
/ 05 февраля 2020

Проблема заключается в принудительном развертывании window, когда вы пытаетесь добавить backgroundImg в качестве подпредставления. В коде, которым вы поделились, вы не устанавливаете значение окна перед его использованием, поэтому есть nil.

Чтобы исправить это, вы должны создать новый экземпляр окна перед добавлением подпредставления.

window = UIWindow()
self.window!.addSubview(backgroundImg)
0 голосов
/ 04 февраля 2020

Вы должны понимать, что такое необязательный тип. Необязательный тип в основном означает, что переменная может быть nil.

Чтобы получить значение из вашей переменной, если оно является необязательным, вы должны развернуть его. Это просто означает восклицательный знак в конце.

...