Ответ 1
Вы используете необязательную цепочку, что означает, что self.window?.frame.width
оценивает действительное целое число, если window
не nil
, в противном случае оно будет nil
- то же самое для height
.
Поскольку вы не можете сделать CGRect
содержащий nil
(или, лучше сказать, CGRectMake
не принимает необязательный для любого из своих аргументов), компилятор сообщает об этом как ошибку.
Решение состоит в том, чтобы неявно развернуть self.window
:
var loadView = UIView(frame: CGRectMake(0, 0, self.window!.frame.size.width, self.window!.frame.size.height))
Но это вызывает ошибку времени выполнения в случае, если self.window
- nil
. Всегда лучше использовать окружение с необязательной привязкой:
if let window = self.window {
var loadView = UIView(frame: CGRectMake(0, 0, window.frame.size.width, window.frame.size.height))
.... do something with loadVIew
}
чтобы убедиться, что представление создано только в том случае, если self.window
на самом деле не ноль.