当前位置: 首页 > 面试题库 >

UIWindow?没有成员边界

夹谷晋
2023-03-14
问题内容

我正在尝试更新PKHUD(https://github.com/pkluz/PKHUD)以与Xcode
6 beta 5一起使用,并且除了一个小细节外,几乎可以通过:

internal class Window: UIWindow {
    required internal init(coder aDecoder: NSCoder!) {
        super.init(coder: aDecoder)
    }

    internal let frameView: FrameView
    internal init(frameView: FrameView = FrameView()) {
        self.frameView = frameView

        // this is the line that bombs
        super.init(frame: UIApplication.sharedApplication().delegate.window!.bounds)

        rootViewController = WindowRootViewController()
        windowLevel = UIWindowLevelNormal + 1.0
        backgroundColor = UIColor.clearColor()

        addSubview(backgroundView)
        addSubview(frameView)
    }
    // more code here
}

Xcode给我错误UIWindow? does not have a member named 'bounds'。我敢肯定这是与类型转换有关的小错误,但是我已经几个小时找不到答案了。

另外,此错误仅在Xcode 6 beta 5中发生,这意味着答案在于Apple最近更改的内容。

非常感谢所有帮助。


问题答案:

协议中的window属性声明UIApplicationDelegate

optional var window: UIWindow! { get set } // beta 4

optional var window: UIWindow? { get set } // beta 5

这意味着它是一个可选属性,产生一个可选UIWindow

println(UIApplication.sharedApplication().delegate.window)
// Optional(Optional(<UIWindow: 0x7f9a71717fd0; frame = (0 0; 320 568); ... >))

因此,您必须将其拆开两次:

let bounds = UIApplication.sharedApplication().delegate.window!!.bounds

或者,如果您要检查应用程序委托没有window属性的可能性,或者将其设置为nil

if let bounds = UIApplication.sharedApplication().delegate.window??.bounds {

} else {
    // report error
}

更新: 使用Xcode 6.3,该delegate属性现在也被定义为可选属性,因此该代码现在为

let bounds = UIApplication.sharedApplication().delegate!.window!!.bounds

要么

if let bounds = UIApplication.sharedApplication().delegate?.window??.bounds {

} else {
    // report error
}


 类似资料:
  • 问题内容: 我正在一个Swift操场上玩,正在上一堂新课。由于某种原因,我不断收到这样的错误:类“没有成员类型”,其名称的常量前面定义了三行。这是代码: Xcode Beta6一直在倒数第二行给我一个错误,说“ DataModel.Type没有名为’myCalendar’的成员 尽管我认为这不会有所作为,但我尝试将myCalendar定义为var。 问题答案: 您无法初始化引用同一类的另一个实例属

  • 问题内容: 该函数的第一行在:类上获取错误。 我遵循Django文档教程,并且它们具有相同的代码并正在运行。 我尝试调用一个实例。 也是我该类的models.py代码是… 无济于事,我仍然有这个错误。 我已经读过有关pylint的文章并进行了运行… 这没有帮助,即使github自述文件说… 防止有关Django生成的属性(例如Model.objects或Views.request)的警告。 我在我

  • 简单的代码,但仍然不能弄清楚哪里出了问题,它说模块pygame没有成员退出,退出

  • 问题内容: 我知道,这个特定的错误已经在各处发布,并且代码有些基本,但是我自己仍然无法弄清楚这个错误,我需要建议。 问题是当我添加parse.com上提供的前两行代码以保存对象时 第二行出现以下错误: “ PFObject”没有名为“下标”的成员 我正在使用Xcode 6.3 beta2。所有必需的库都与通过BridgeHeader导入的二进制文件链接。 我应该使用什么语法? 问题答案: 发生这种

  • 问题内容: 将项目转换为swift 3后,在此代码块的第一行出现以下错误: 我猜该错误是由.. 语法变化引起的,对此的更正是什么? 问题答案: 新语法如下: 作为建议,您无需指定该字符串,因为假定您要为其分配值。

  • 问题内容: 我正在尝试将代码从Swift 2版本迁移到Swift 3版本。我无法迁移以下代码部分,也没有找到任何解决方案。我该怎么做? //标记:URLRequestConvertible 问题答案: 我会将此计算属性的名称更改为,以避免与新的类型名称冲突。巧合的是,此计算属性应使用以下类型: