Para iOS, intente:
var systemVersion = UIDevice.current.systemVersion
Para OS X, intente:
var systemVersion = NSProcessInfo.processInfo().operatingSystemVersion
Si solo desea verificar si los usuarios están ejecutando al menos una versión específica, también puede usar la siguiente función Swift 2 que funciona en iOS y OS X:
if #available(iOS 9.0, *) {
// use the feature only available in iOS 9
// for ex. UIStackView
} else {
// or use some work around
}
PERO no se recomienda verificar la versión del sistema operativo. Es mejor verificar si la función que desea usar está disponible en el dispositivo que comparar los números de versión.
Para iOS, como se mencionó anteriormente, debe verificar si responde a un selector; p.ej.:
if (self.respondsToSelector(Selector("showViewController"))) {
self.showViewController(vc, sender: self)
} else {
// some work around
}
Actualización:
ahora debe usar la nueva verificación de disponibilidad introducida con Swift 2:
por ejemplo, para verificar iOS 9.0 o posterior en tiempo de compilación, use esto:
o se puede usar con todo el método o clase
Para más información mira esto .
Verificaciones de tiempo de ejecución:
si no quieres la versión exacta pero quieres verificar iOS 9,10 u 11 usando if:
EDITAR: Acabo de encontrar otra forma de lograr esto:
fuente
Realicé funciones de ayuda que se transfirieron desde el siguiente enlace a swift:
¿Cómo podemos detectar mediante programación en qué versión de iOS se está ejecutando el dispositivo?
Se puede usar así:
Swift 4.2
fuente
Swift 5
No necesitamos crear una extensión ya
ProcessInfo
que nos da la información de la versión. Puede ver el código de muestra para iOS como se muestra a continuación.Referencia: http://nshipster.com/swift-system-version-checking/
fuente
Swift 5
fuente
#available(...)
bloque impide que el compilador muestre errores para el código que no se admite en versiones anteriores a las proporcionadas.Hice este Singleton para un uso simple, creé un
IOSVersion.swift
archivo y agregué este código:UTILIZAR :
Gracias @KVISH
Editar Swift 2:
fuente
static let shared = IOSVersion
Si está utilizando Swift 2 y desea verificar la versión del sistema operativo para usar una determinada API, puede usar la nueva función de disponibilidad:
Escribí esta respuesta porque es la primera pregunta en Google para la
swift 2 check system version
consulta.fuente
Actualización para Swift 3.0+
fuente
ComparisonResult
para hacerlo más corto.UIDevice.current.systemVersion.compare(version, options: .numeric)
en unfunc
puede ayudar a la lectura del código.Detalles
Enlaces
OperatingSystemVersion
Solución
fuente
Double
para un número de versión, por ejemplo, en10.0999
lugar de10.1
?var stringVersion = "10.0999"; print(stringVersion.toDouble!) // print 10.0999
, se imprimirá10.0999
y verifica como
fuente
La forma más fácil y sencilla de verificar la versión del sistema (y muchas otras versiones) en Swift 2 y superior es:
Además, con
#available
usted puede verificar versiones de estos:fuente
Mattt Thompson comparte una manera muy útil
fuente
Swift 4.x
Uso:
La respuesta de PS KVISH se tradujo a Swift 4.x con el cambio de nombre de las funciones, ya que específicamente estoy usando este fragmento para la aplicación iOS.
fuente
Nota: Disponible en iOS 8.0 y posterior. OS X v10.10 y posterior
fuente
Basado en la respuesta de Matt Thompson, aquí hay un método con pruebas de unidad respectivas que funciona con Swift y Objective-c en iOS 7 y superior (incluido iOS 9 que ya no le permite verificar el NSFoundationNumber ):
.
fuente
fuente
También si quieres consultar WatchOS.
Rápido
C objetivo
fuente
Obtenga la versión actual del sistema y divídalo. Para que pueda obtener la versión mayor y menor.
fuente
La mayoría de los códigos de muestra escritos aquí obtendrán resultados inesperados con versiones extra-cero. Por ejemplo,
Este método no devolverá verdadero con la versión aprobada "10.3.0" en iOS "10.3". Este tipo de resultado no tiene sentido y deben considerarse como la misma versión. Para obtener un resultado de comparación exacto, debemos considerar comparar todos los componentes numéricos en la cadena de versión. Además, proporcionar métodos globales en mayúsculas no es un buen camino a seguir. Como el tipo de versión que utilizamos en nuestro SDK es un String, tiene sentido ampliar la funcionalidad de comparación en String.
Para comparar la versión del sistema, todos los siguientes ejemplos deberían funcionar.
Puede consultarlo en mi repositorio aquí https://github.com/DragonCherry/VersionCompare
fuente