ios - profesional - swift apple
¿Cómo puedo encontrar la versión de Swift por programación? (5)
De tu comentario:
Quiero comprobar porque las diferentes versiones de Swift tienen diferentes características
No debe verificar la versión de su lenguaje de programación para usar algunas características o no. Este enfoque es mucho mejor:
if (self.respondsToSelector(Selector("yourMethodSelector"))) {
self.yourMethodSelector(test, sender: self)
} else {
//error handling
}
Simplemente verifique si un método está disponible o no.
Sé que puedo encontrar la versión de Swift que estoy ejecutando en este momento volviendo a una Terminal y escribiendo:
xcrun swift --version
Swift version 1.1 (swift-600.0.57.4)
Target: x86_64-apple-darwin13.4.0
Además, he estado leyendo acerca de las Macros de preprocesador en Swift, pero no tuve suerte en encontrar una constante de Swift.
A medida que Swift 1.2 se acerca, será bueno marcar el código antiguo que solo se ejecuta en Swift 1.1 (Xcode hasta 6.2) o el nuevo código que necesita Xcode 6.3 (Swift 1.2)
Nota: también puedo usar system () para hacer algo como:
system("xcrun swift --version | grep version > somefile.txt")
A continuación, abra somefile.txt, pero prefiera una solución más simple
Finalmente obtuve una solución alternativa para hacer esto. Estoy usando las constantes con el prefijo __
que puedes observar en tu área de juegos. Esto hubiera sido más fácil con un cierto nivel de reflection , pero ...
__IPHONE_OS_VERSION_MAX_ALLOWED
es 80200, lo que significa __IPHONE_8_2
para Xcode 6.2 (Swift 1.1) pero su valor es 80300 ( __IPHONE_8_3
) en Xcode 6.3 (Swift 1.2)
func isSwift12() -> Bool {
return __IPHONE_OS_VERSION_MAX_ALLOWED == 80300
}
isSwift12()
Entonces, ahora en su biblioteca puede fallar rápidamente y decirle a su usuario que la versión de Swift no es correcta al usar esto:
assert(isSwift12(), "Need Swift 12")
Swift te dará un buen:
afirmación fallida: Need Swift 12: file, línea 20
ACTUALIZACIÓN WWDC 2015 - Swift 2.0
Como se indica en el blog Swift de Apple, en Swift 2.0 tenemos #available
bloques disponibles para verificar ciertas versiones del sistema operativo en nuestro código. Un ejemplo debería ser:
if #available(OSX 10.11, *) {
monochromeFilter!.setValue(CIColor(red: 0.5, green: 0.5, blue: 0.5), forKey:kCIInputColorKey)
} else {
// Fallback on earlier versions
}
Puede usar directivas de compilación condicional para probar la versión Swift específica utilizada para construir su proyecto:
#if swift(>=4.0)
print("Hello, Swift 4!")
#elseif swift(>=3.0)
print("Hello, Swift 3!")
#elseif swift(>=2.2)
print("Hello, Swift 2.2!")
#elseif swift(>=2.1)
print("Hello, Swift 2.1!")
#endif
Para iOS :
var systemVersion = UIDevice.currentDevice (). systemVersion;
Para OSX :
var systemVersion = NSProcessInfo.processInfo (). operatingSystemVersion;
K.
Swift 3.1 amplía el atributo @available
para admitir la especificación de números de versión de Swift además de sus versiones de plataforma existentes.
// Swift 3.1
@available(swift 3.1)
func intVersion(number: Double) -> Int? {
return Int(exactly: number)
}
@available(swift, introduced: 3.0, obsoleted: 3.1)
func intVersion(number: Double) -> Int {
return Int(number)
}