In Objective-C, if I wanted to use a specific class that\'s only present in a new version of iOS, I would do something like this:
if( [UIBlurEffect class] )
Seems like I've figured out what you can do
I used NSClassFromString() to check if class is available on device, i.e.
if NSClassFromString("UIBlurEffect") {
let blur = UIBlurEffect(...)
//...
}
else {
//...
}
It's needed to make UIKit.framework (or another corresponding framework) optional. If you create Swift-based application in XCode6-BetaX, all the frameworks wouldn't be explicitly added to the link build phase so you need to go to your target settings, add UIKit.framework as a linked framework (in 'Link Binary With Libraries' section) and to change its status to Optional. This step does the trick and I've managed to run version specific code without a problem.
Update: You don't need to make it optional anymore, since Xcode 6 beta 6 (via @user102008)
Update 2: You can't actually perform implicit if statement checks for nil (since Xcode 6 Beta 5). You need to assert it like that:
if NSClassFromString("UIBlurEffect") != nil {
let blur = UIBlurEffect(...)
//...
}
else {
//...
}
(via @daniel-galasko)