窗口的类型'具有与协议所要求的不同的选择性uiapplicationdelegate'在XCode更新到6.3之后

时间:2015-04-13 11:08:50

标签: swift

我的AppDelegate中有这段代码var window = UIWindow()。我的应用程序之前工作正常。在我将XCode更新为6.3后,我无法再在模拟器中运行我的iOS应用程序,因为我收到错误

  

'窗口的类型'具有与协议所要求的不同的可选性   ' uiapplicationdelegate'

2 个答案:

答案 0 :(得分:1)

感谢您的所有贡献。我不确定我的代码window声明突然不再起作用的原因。为了解决这个问题,我使用了这里的答案:https://stackoverflow.com/a/25482567/2445717

我将窗口的声明恢复为默认值:var window: UIWindow?

然后使用下面的代码didFinishLaunchingWithOptions

    window = UIWindow(frame: UIScreen.mainScreen().bounds)
    if let window = window {
        window.backgroundColor = UIColor.whiteColor()
        window.rootViewController = ViewController()
        window.makeKeyAndVisible()
    }

答案 1 :(得分:0)

在Swift 2中,AppDelegate有:

var window: UIWindow?

而不是

var window: UIWindow

因为它应该是零

您可以使用lazy var简单地生成代码

lazy var window: UIWindow? = {
    let win = UIWindow(frame: UIScreen.mainScreen().bounds)
    win.backgroundColor = UIColor.whiteColor()
    win.rootViewController = UINavigationController(rootViewController: self.authViewController)
    return win
}()