如果iOS版本为8或更高版本,则仅初始化全局变量?

时间:2014-10-06 14:41:10

标签: ios swift sprite-kit

我想在我的新游戏中使用SKLightNode。您可能知道iOS 7.1不支持SKLightNode。我仍然希望将它用于8.0或更高版本的那些。 7.1或更低的用户必须在没有灯光效果的情况下进行游戏。

为了能够在我的更新方法中更改LightNode的位置,并且在与某些对象发生碰撞时,我想让变量成为全局变量。

var light:SKLightNode!

我知道如何获取iOS版本,但使用上面的代码行已经使我的应用程序在7.1上崩溃,然后才能验证它是否可行。

如何在使用iOS 8或更高版本时才初始化此变量? 我正在使用Swift和SpriteKit。

感谢您的帮助, Mikey

1 个答案:

答案 0 :(得分:2)

目前我只能想象解决这个问题的方法是将SKLightNode存储为Any?。如果不是nil

,则进行投射
var light: Any? = {
    let iosVersion = NSString(string: UIDevice.currentDevice().systemVersion).doubleValue
    return (iosVersion >= 8 ? SKLightNode() : nil)
}()

if let light = light {
    println("yeah, we have \(light as SKLightNode)")
} else {
    println("nay, we have nothing")
}