W systemie iOS spróbuj:
var systemVersion = UIDevice.current.systemVersion
W przypadku systemu OS X spróbuj:
var systemVersion = NSProcessInfo.processInfo().operatingSystemVersion
Jeśli chcesz tylko sprawdzić, czy użytkownicy mają uruchomioną co najmniej określoną wersję, możesz również skorzystać z następującej funkcji Swift 2, która działa na iOS i OS X:
if #available(iOS 9.0, *) {
// use the feature only available in iOS 9
// for ex. UIStackView
} else {
// or use some work around
}
ALE nie jest zalecane sprawdzanie wersji systemu operacyjnego. Lepiej sprawdzić, czy funkcja, której chcesz użyć, jest dostępna na urządzeniu, niż porównywać numery wersji.
W przypadku systemu iOS, jak wspomniano powyżej, należy sprawdzić, czy odpowiada na selektor; na przykład.:
if (self.respondsToSelector(Selector("showViewController"))) {
self.showViewController(vc, sender: self)
} else {
// some work around
}
Aktualizacja:
Teraz powinieneś użyć nowego sprawdzania dostępności wprowadzonego w Swift 2:
np. Aby sprawdzić w systemie iOS 9.0 lub nowszym w czasie kompilacji, użyj tego:
lub może być użyty z całą metodą lub klasą
Aby uzyskać więcej informacji, zobacz to .
Kontrola czasu pracy:
jeśli nie chcesz dokładnej wersji, ale chcesz sprawdzić iOS 9,10 lub 11 przy użyciu, jeśli:
EDYCJA: Właśnie znalazłem inny sposób na osiągnięcie tego:
źródło
Zrobiłem funkcje pomocnicze, które zostały przeniesione z poniższego linku do szybkiego:
Jak możemy programowo wykryć, na której wersji iOS działa urządzenie?
Można go używać w następujący sposób:
Szybki 4.2
źródło
Szybki 5
Nie musimy tworzyć rozszerzenia, ponieważ
ProcessInfo
daje nam informacje o wersji. Możesz zobaczyć przykładowy kod dla iOS jak poniżej.Odniesienie: http://nshipster.com/swift-system-version-checking/
źródło
Szybki 5
źródło
#available(...)
Blok zatrzymuje kompilatorowi wyświetlanie błędów dla kodu, który nie jest obsługiwany w wersjach starszych niż podane.Zrobiłem ten Singleton do prostego użytku, utworzyłem
IOSVersion.swift
plik i dodałem ten kod:POSŁUGIWAĆ SIĘ :
Dzięki @KVISH
Edytuj Swift 2:
źródło
static let shared = IOSVersion
Jeśli używasz Swift 2 i chcesz sprawdzić wersję systemu operacyjnego, aby użyć określonego interfejsu API, możesz użyć nowej funkcji dostępności:
Napisałem tę odpowiedź, ponieważ jest to pierwsze pytanie w Google dla tego
swift 2 check system version
zapytania.źródło
Aktualizacja dla Swift 3.0+
źródło
ComparisonResult
aby go skrócić.UIDevice.current.systemVersion.compare(version, options: .numeric)
wfunc
pomocy może pomóc w odczytaniu kodu.Detale
Spinki do mankietów
OperatingSystemVersion
Rozwiązanie
źródło
Double
numeru wersji, np.10.0999
Zamiast10.1
?var stringVersion = "10.0999"; print(stringVersion.toDouble!) // print 10.0999
. Wydrukuje10.0999
i sprawdź jako
źródło
Najłatwiejszym i najprostszym sposobem sprawdzenia wersji systemu (i wielu innych wersji) w Swift 2 i wyższych jest:
Ponadto
#available
możesz sprawdzić wersje tych:źródło
Mattt Thompson udostępnia bardzo przydatny sposób
źródło
Swift 4.x
Stosowanie:
Odpowiedź PS KVISH przetłumaczona na Swift 4.x ze zmianą nazw funkcji, ponieważ specjalnie używam tego fragmentu kodu dla aplikacji na iOS.
źródło
Uwaga: Dostępne w iOS 8.0 i nowszych. OS X 10.10 i nowszy
źródło
Na podstawie odpowiedzi Matta Thompsona, oto metoda z odpowiednimi testami jednostkowymi, która działa z Swift i Objective-c na iOS 7 i nowszych (w tym iOS 9, które nie pozwalają już sprawdzać NSFoundationNumber ):
.
źródło
źródło
Również jeśli chcesz sprawdzić WatchOS.
Szybki
Cel C
źródło
Pobierz aktualną wersję systemu i podziel ją. Możesz uzyskać wersję główną i mniejszą.
źródło
Większość zapisanych tutaj przykładowych kodów uzyska nieoczekiwany wynik w wersjach z dodatkowymi zerami. Na przykład,
Ta metoda nie zwróci wartości true w przypadku przekazanej wersji „10.3.0” w systemie iOS „10.3”. Tego rodzaju wynik nie ma sensu i należy je traktować jako tę samą wersję. Aby uzyskać dokładny wynik porównania, musimy rozważyć porównanie wszystkich składników liczb w ciągu wersji. Ponadto podanie globalnych metod wielkimi literami nie jest dobrym rozwiązaniem. Ponieważ typ wersji, której używamy w naszym zestawie SDK, jest ciągiem, sensowne jest rozszerzenie funkcji porównywania w łańcuchu.
Aby porównać wersję systemu, wszystkie poniższe przykłady powinny działać.
Możesz to sprawdzić w moim repozytorium tutaj https://github.com/DragonCherry/VersionCompare
źródło