Для iOS попробуйте:
var systemVersion = UIDevice.current.systemVersion
Для OS X попробуйте:
var systemVersion = NSProcessInfo.processInfo().operatingSystemVersion
Если вы просто хотите проверить, работает ли у пользователей хотя бы определенная версия, вы также можете использовать следующую функцию Swift 2, которая работает на iOS и OS X:
if #available(iOS 9.0, *) {
// use the feature only available in iOS 9
// for ex. UIStackView
} else {
// or use some work around
}
НО не рекомендуется проверять версию ОС. Лучше проверить, доступна ли функция, которую вы хотите использовать, на устройстве, чем сравнивать номера версий.
Для iOS, как упоминалось выше, вы должны проверить, реагирует ли она на селектор; например.:
if (self.respondsToSelector(Selector("showViewController"))) {
self.showViewController(vc, sender: self)
} else {
// some work around
}
Обновление:
теперь вы должны использовать новую проверку доступности, представленную в Swift 2:
например, чтобы проверить iOS 9.0 или новее во время компиляции, используйте это:
или может использоваться с целым методом или классом
Для получения дополнительной информации см. Это .
Проверка времени выполнения:
если вам не нужна точная версия, но вы хотите проверить iOS 9,10 или 11, используя:
РЕДАКТИРОВАТЬ: Просто нашел другой способ добиться этого:
источник
Я сделал вспомогательные функции, которые были перенесены из ссылки ниже в swift:
Как мы можем программно определить, на какой версии iOS работает устройство?
Это можно использовать так:
Swift 4.2
источник
Swift 5
Нам не нужно создавать расширение, так как
ProcessInfo
дает нам информацию о версии. Вы можете увидеть пример кода для iOS, как показано ниже.Ссылка: http://nshipster.com/swift-system-version-checking/
источник
Swift 5
источник
#available(...)
Блок останавливает отображение компилятором ошибок для кода, который не поддерживается в версиях, более старых, чем предусмотрено.Я сделал этот Singleton для простого использования, создал
IOSVersion.swift
файл и добавил этот код:ИСПОЛЬЗОВАНИЕ:
Спасибо @KVISH
Редактировать Swift 2:
источник
static let shared = IOSVersion
Если вы используете Swift 2 и хотите проверить версию ОС, чтобы использовать определенный API, вы можете использовать новую функцию доступности:
Я написал этот ответ, потому что это первый вопрос в Google для
swift 2 check system version
запроса.источник
Обновление для Swift 3.0+
источник
ComparisonResult
чтобы сделать его короче.UIDevice.current.systemVersion.compare(version, options: .numeric)
вfunc
может помочь чтению кода.подробности
связи
OperatingSystemVersion
Решение
источник
Double
номера версии, например10.0999
вместо10.1
?var stringVersion = "10.0999"; print(stringVersion.toDouble!) // print 10.0999
, это напечатает10.0999
и проверить как
источник
Самый простой и простой способ проверить версию системы (и многих других версий) в Swift 2 и выше:
Кроме того,
#available
вы можете проверить версии этих:источник
Мэтт Томпсон делится очень удобным способом
источник
Swift 4.x
Использование:
PS KVISH ответ переведен на Swift 4.x с переименованием функций, так как я специально использую этот фрагмент для приложения iOS.
источник
Примечание. Доступно в iOS 8.0 и более поздних версиях. OS X v10.10 и позже
источник
Основываясь на ответе Мэтта Томпсона, вот метод с соответствующими модульными тестами, который работает с Swift и Objective-c на iOS 7 и выше (включая iOS 9, которая больше не позволяет проверять NSFoundationNumber ):
,
источник
источник
Также, если вы хотите проверить WatchOS.
стриж
Objective-C
источник
Получить текущую версию системы и разделить ее. Таким образом, вы можете получить мажорную и минорную версию.
источник
Большинство примеров кода, написанных здесь, получат неожиданный результат с ненулевыми версиями. Например,
Этот метод не вернет true с переданной версией "10.3.0" в iOS "10.3". Этот вид результата не имеет смысла, и они должны рассматриваться как одна и та же версия. Чтобы получить точный результат сравнения, мы должны рассмотреть сравнение всех числовых компонентов в строке версии. Кроме того, предоставление глобальных методов всеми заглавными буквами не является хорошим способом. Поскольку тип версии, который мы используем в нашем SDK, является String, имеет смысл расширять функции сравнения в String.
Чтобы сравнить версию системы, все следующие примеры должны работать.
Вы можете проверить это в моем хранилище здесь https://github.com/DragonCherry/VersionCompare
источник