我刚刚升级到Xcode 6.1和最新版本的Swift。我以前的工作代码:
let window :UIWindow = UIApplication.sharedApplication().keyWindow
现在在Xcode中收到错误消息:
Value of optional type 'UIWindow?' not unwrapped; did you mean to use '!' or '?'?
Xcode建议将代码更改为以下内容,但现在在使用时调用代码时会出现崩溃。
let window :UIWindow = UIApplication.sharedApplication().keyWindow!
解决
这对我有用:
var window :UIWindow? = UIApplication.sharedApplication().keyWindow
if (window != nil) {
self.center = window!.center
}
window?.addSubview(self)
答案 0 :(得分:2)
将变量的类型更改为可选,以匹配keyWindow
属性的类型:
let window :UIWindow? = UIApplication.sharedApplication().keyWindow
你得到了崩溃,因为你告诉Swift 解开这个变量,我知道它不是零。除此之外,它是没有。
另一种方法是使用条件展开:
if let window :UIWindow = UIApplication.sharedApplication().keyWindow {
// Access "window" here.
}