gpt4 book ai didi

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

转载 作者:IT王子 更新时间:2023-10-29 05:29:03 24 4
gpt4 key购买 nike

代码:

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

我尝试以编程方式创建一个 UIView。当尝试为 View 设置窗口高度和宽度时,它给出错误“可选类型‘CGFloat 的值?’”未展开;您是否打算使用“!”或者 '?'?”为什么显示此错误?将不胜感激任何帮助。提前致谢

最佳答案

您正在使用 optional chaining ,这意味着如果 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,则会引发运行时错误。用可选绑定(bind)包围它总是更好的做法:

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 实际上不为 nil 时才会创建 View 。

关于swift - 可选类型 CGFloat 的值未在 Swift 中展开错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25662595/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com