Ich habe eine einzige Codebasis, die mit Xcode 7 Beta und Xcode 6.4 kompatibel sein muss. Dies liegt daran, dass Beta-Tests und App Store-Builds mit der stabilen Version des Compilers und SDK erstellt werden sollten, aber ich habe auch iOS 9 Beta auf einem Telefon, das ich zum Testen verwende.Gibt es eine #ifdef, um in Swift zwischen Xcode 6.4 und Xcode 7 beta zu unterscheiden?
Dies war kein Problem mit Objective-C, aber jetzt, da ich ein bisschen Swift hinzufüge, finde ich es schwierig, die Kompatibilität mit beiden Versionen von Xcode aufrechtzuerhalten.
Was kann ich tun?
Ich weiß, Swift hat eine #ifdef-Direktive, aber gibt es #ifdefs als kann zwischen Swift 1.2 und 2.0 unterscheiden? Ich kann keine gültige Liste für Swift finden, außer für DEBUG, os und arch.
Hier ist ein Beispiel dafür, was ich meine:
#ifdef __IPHONE_9_0
some Swift code that works in Swift 2.0 but won't compile in Swift 1.2
#else
some Swift code that works in Swift 1.2 but won't compile in Swift 2.0
#endif
Oder ein konkreteres Beispiel:
public final class MessageParser : NSObject {
#ifdef __IPHONE_9_0
static let sharedHashtagRegex = try! NSRegularExpression(pattern:"(^|\\W)(#|\\uFF03)(\\w*\\p{L}\\w*)", options:[]);
#else
static let sharedHashtagRegex = NSRegularExpression(pattern:"(^|\\W)(#|\\uFF03)(\\w*\\p{L}\\w*)", options:nil, error:nil)!
#endif
// ...
}
"Ich habe eine einzige Codebasis, die mit Xcode 7 Beta und Xcode 6.4 kompatibel sein muss" Es wird nicht sein. Vergiss es. Dies sind zwei völlig verschiedene Versionen von Swift (und der Cocoa API); Sie können unmöglich Swift-Code schreiben, der für beide funktioniert. – matt