Swift 类型';窗口';具有不同于协议要求的可选性';UIApplicationLegate';在XCode更新到6.3之后
我的AppDelegate中有这个代码Swift 类型';窗口';具有不同于协议要求的可选性';UIApplicationLegate';在XCode更新到6.3之后,swift,Swift,我的AppDelegate中有这个代码var window=UIWindow()。我的应用程序以前工作正常。在我将XCode更新到6.3之后,我无法再在模拟器中运行我的iOS应用程序,因为我收到了错误 “窗口”的类型具有不同于协议要求的可选性 “UIApplicationLegate” 如果在代码的类定义中单击单词uiapplicationelegate,将打开协议定义。我怀疑您正在使用此电话: func application(application: UIApplication, sup
var window=UIWindow()
。我的应用程序以前工作正常。在我将XCode更新到6.3之后,我无法再在模拟器中运行我的iOS应用程序,因为我收到了错误
“窗口”的类型具有不同于协议要求的可选性
“UIApplicationLegate”
如果在代码的类定义中单击单词
uiapplicationelegate
,将打开协议定义。我怀疑您正在使用此电话:
func application(application: UIApplication, supportedInterfaceOrientationsForWindow window: UIWindow?) {...}
在Swift 1.2中,这一点可能有所改变,但似乎没有得到广泛的记录。如果你改写
func application(application: UIApplication, supportedInterfaceOrientationsForWindow window: UIWindow) {...}
然后您将得到您报告的错误消息
丹尼尔·纳吉(Daniel Nagy)提到的自动化程序并没有解决这个问题——我遇到了类似的问题
如果您提供了该可选函数,那么只需在函数定义中的
ui窗口
后添加一个?
。感谢您的所有贡献。我不太清楚为什么突然我的代码窗口声明不再工作。为了解决这个问题,我使用了下面的答案:
我将窗口的去极化恢复为默认值:var窗口:UIWindow?
然后将下面的代码用于didfishlaunchingwithoptions
window = UIWindow(frame: UIScreen.mainScreen().bounds)
if let window = window {
window.backgroundColor = UIColor.whiteColor()
window.rootViewController = ViewController()
window.makeKeyAndVisible()
}
在Swift 2中,AppDelegate具有:
var window: UIWindow?
而不是
var window: UIWindow
因为它应该是零
您可以使用惰性变量简单地生成代码
lazy var window: UIWindow? = {
let win = UIWindow(frame: UIScreen.mainScreen().bounds)
win.backgroundColor = UIColor.whiteColor()
win.rootViewController = UINavigationController(rootViewController: self.authViewController)
return win
}()
因为现在是:var window:UIWindow?但是你应该通过编辑->转换->转换为最新的Swift语法来避免这些类型的错误。你键入的代码是我在Swift中创建应用程序时的默认代码。我改为上面的代码,因为我遇到了一个错误致命错误:在展开可选值时意外发现了nil
并使用了窗口!(例如window!.frame=..
您在哪里使用了该代码,该window!.frame..在AppDelegate中?我在func应用程序中使用了该代码(应用程序:UIApplication,didFinishLaunchingWithOptions launchOptions:[NSObject:AnyObject]?)->Bool