What's the Swift equivalent of Objective-C's "#ifdef __IPHONE_11_0"?

The iOS 11 SDK comes with Swift 3.2 (or Swift 4), so you can use a Swift version check to accomplish the same thing:

#if swift(>=3.2)
    if #available(iOS 11.0, *) {
        …
    }
#endif

This is the solution suggested by Apple:

if #available(iOS 11.0, *) {
    // iOS 11 specific stuff here
} else {
    // non iOS 11 stuff here
}

Please refer to this resource (watch video on mark 6:50 for more details)


If you want to put the condition outside of the function, you could do it like below.

@available(iOS 11.0, *)
func functionName() {
 // function contents
}