Swift中的可选类型CGFloat的值未展开错误

  • 本文关键字:错误 类型 Swift CGFloat swift
  • 更新时间 :
  • 英文 :


代码:

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相同。

由于无法生成包含nilCGRect(或者更确切地说,CGRectMake不接受其任何参数的可选项),编译器会将其报告为错误。

解决方案是隐式展开self.window:

    var loadView = UIView(frame: CGRectMake(0, 0, self.window!.frame.size.width, self.window!.frame.size.height))

但如果self.windownil,则会引发运行时错误。最好的做法是使用可选的绑定:

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时才创建视图。

相关内容

最新更新