Para iOS, tente:
var systemVersion = UIDevice.current.systemVersion
Para o OS X, tente:
var systemVersion = NSProcessInfo.processInfo().operatingSystemVersion
Se você quiser apenas verificar se os usuários estão executando pelo menos uma versão específica, também pode usar o seguinte recurso Swift 2, que funciona no iOS e no OS X:
if #available(iOS 9.0, *) {
// use the feature only available in iOS 9
// for ex. UIStackView
} else {
// or use some work around
}
MAS não é recomendável verificar a versão do sistema operacional. É melhor verificar se o recurso que você deseja usar está disponível no dispositivo do que comparar os números de versão.
Para o iOS, como mencionado acima, você deve verificar se ele responde a um seletor; por exemplo.:
if (self.respondsToSelector(Selector("showViewController"))) {
self.showViewController(vc, sender: self)
} else {
// some work around
}
Atualização:
Agora você deve usar a nova verificação de disponibilidade introduzida no Swift 2:
por exemplo, para verificar o iOS 9.0 ou posterior em tempo de compilação, use o seguinte:
ou pode ser usado com todo o método ou classe
Para mais informações, consulte isso .
Verificações de tempo de execução:
se você não deseja a versão exata, mas deseja verificar o iOS 9,10 ou 11 usando:
EDIT: Acabei de encontrar outra maneira de conseguir isso:
fonte
Criei funções auxiliares que foram transferidas do link abaixo para swift:
Como podemos detectar programaticamente em qual versão do iOS o dispositivo está sendo executado?
Pode ser usado assim:
Swift 4.2
fonte
Swift 5
Não precisamos criar extensão, pois
ProcessInfo
nos fornece as informações da versão. Você pode ver o código de exemplo para iOS como abaixo.Referência: http://nshipster.com/swift-system-version-checking/
fonte
Swift 5
fonte
#available(...)
bloco impede o compilador de exibir erros para o código que não é suportado em versões anteriores às fornecidas.Eu criei este Singleton para uso simples, criei um
IOSVersion.swift
arquivo e adicionei este código:USAR :
Obrigado @KVISH
Editar Swift 2:
fonte
static let shared = IOSVersion
Se você estiver usando o Swift 2 e quiser verificar a versão do sistema operacional para usar uma determinada API, poderá usar o novo recurso de disponibilidade:
Eu escrevi esta resposta porque é a primeira pergunta no Google para a
swift 2 check system version
consulta.fonte
Atualização para Swift 3.0+
fonte
ComparisonResult
para torná-lo mais curto.UIDevice.current.systemVersion.compare(version, options: .numeric)
em umfunc
pode ajudar a ler o código.Detalhes
Ligações
OperatingSystemVersion
Solução
fonte
Double
para um número de versão, por exemplo, em10.0999
vez de10.1
?var stringVersion = "10.0999"; print(stringVersion.toDouble!) // print 10.0999
, ele será impresso #10.0999
e verifique como
fonte
A maneira mais fácil e simples de verificar a versão do sistema (e muitas outras versões) no Swift 2 e superior é:
Além disso,
#available
você pode verificar versões destes:fonte
Mattt Thompson compartilha uma maneira muito útil
fonte
Swift 4.x
Uso:
Resposta do PS KVISH traduzida para o Swift 4.x com renomeação das funções, pois estou usando especificamente esse snippet para o aplicativo iOS.
fonte
Nota: Disponível no iOS 8.0 e posterior. OS X v10.10 e posterior
fonte
Com base na resposta de Matt Thompson, aqui está um método com os respectivos testes de unidade que funcionam com Swift e Objective-c no iOS 7 e superior (incluindo o iOS 9, que não permite mais que você verifique o NSFoundationNumber ):
.
fonte
fonte
Além disso, se você quiser verificar o WatchOS.
Rápido
Objetivo-C
fonte
Obtenha a versão atual do sistema e divida-a. Então você pode obter a versão principal e secundária.
fonte
A maioria dos códigos de amostra escritos aqui obterá resultados inesperados com versões extra-zero. Por exemplo,
Este método não retornará verdadeiro com a versão passada "10.3.0" no iOS "10.3". Esse tipo de resultado não faz sentido e deve ser considerado como a mesma versão. Para obter resultados precisos de comparação, devemos considerar a comparação de todos os componentes numéricos na string de versão. Além disso, fornecer métodos globais em letras maiúsculas não é um bom caminho. Como o tipo de versão que usamos em nosso SDK é uma String, faz sentido estender a funcionalidade de comparação na String.
Para comparar a versão do sistema, todos os exemplos a seguir devem funcionar.
Você pode conferir no meu repositório aqui https://github.com/DragonCherry/VersionCompare
fonte