代码:
var loadView = UIView(frame: CGRectMake(0, 0, self.window?.frame.size.width, self.window?.frame.size.height))
我尝试创建一个UIView程序。当尝试为视图设置窗口高度和宽度时,会出现错误,错误为"未展开可选类型为CGFloat?的值;您是想使用'!'还是'?'?"为什么会出现这种错误?任何帮助都将不胜感激。提前感谢
您使用的是可选的链接,这意味着如果window
不是nil
,则self.window?.frame.width
计算为有效整数,否则计算为nil
——与height
相同。
由于无法生成包含nil
的CGRect
(或者更确切地说,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
}
以便确保只有当CCD_ 12实际上不是nil时才创建视图。