programar profesional para mac español desde curso completo cero apple ios macos swift xcode6

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) }