Versuchen Sie für iOS:
var systemVersion = UIDevice.current.systemVersion
Versuchen Sie unter OS X:
var systemVersion = NSProcessInfo.processInfo().operatingSystemVersion
Wenn Sie nur überprüfen möchten, ob auf den Benutzern mindestens eine bestimmte Version ausgeführt wird, können Sie auch die folgende Swift 2-Funktion verwenden, die unter iOS und OS X funktioniert:
if #available(iOS 9.0, *) {
// use the feature only available in iOS 9
// for ex. UIStackView
} else {
// or use some work around
}
ABER es wird nicht empfohlen, die Betriebssystemversion zu überprüfen. Es ist besser zu überprüfen, ob die gewünschte Funktion auf dem Gerät verfügbar ist, als die Versionsnummern zu vergleichen.
Wie oben erwähnt, sollten Sie unter iOS überprüfen, ob es auf einen Selektor reagiert. z.B.:
if (self.respondsToSelector(Selector("showViewController"))) {
self.showViewController(vc, sender: self)
} else {
// some work around
}
Update:
Jetzt sollten Sie die neue Verfügbarkeitsprüfung verwenden, die mit Swift 2 eingeführt wurde:
z. B. Um beim Kompilieren nach iOS 9.0 oder höher zu suchen, verwenden Sie Folgendes:
oder kann mit der gesamten Methode oder Klasse verwendet werden
Weitere Informationen finden Sie hier .
Laufzeitprüfungen:
Wenn Sie keine genaue Version wünschen, aber iOS 9,10 oder 11 überprüfen möchten, indem Sie Folgendes verwenden:
EDIT: Habe gerade einen anderen Weg gefunden, um dies zu erreichen:
quelle
Ich habe Hilfsfunktionen erstellt, die vom folgenden Link in swift übertragen wurden:
Wie können wir programmgesteuert erkennen, auf welcher iOS-Version das Gerät ausgeführt wird?
Es kann wie folgt verwendet werden:
Swift 4.2
quelle
Swift 5
Wir müssen keine Erweiterung erstellen, da
ProcessInfo
wir die Versionsinformationen erhalten. Sie können den Beispielcode für iOS wie folgt sehen.Referenz: http://nshipster.com/swift-system-version-checking/
quelle
Swift 5
quelle
#available(...)
Block verhindert, dass der Compiler Fehler für Code anzeigt, der in älteren als den bereitgestellten Versionen nicht unterstützt wird.Ich habe diesen Singleton für die einfache Verwendung erstellt, eine
IOSVersion.swift
Datei erstellt und diesen Code hinzugefügt:VERWENDEN :
Danke @KVISH
Bearbeiten Sie Swift 2:
quelle
static let shared = IOSVersion
Wenn Sie Swift 2 verwenden und die Betriebssystemversion überprüfen möchten, um eine bestimmte API zu verwenden, können Sie die neue Verfügbarkeitsfunktion verwenden:
Ich habe diese Antwort geschrieben, weil es die erste Frage in Google für die
swift 2 check system version
Abfrage ist.quelle
Update für Swift 3.0+
quelle
ComparisonResult
, um es kürzer zu machen.UIDevice.current.systemVersion.compare(version, options: .numeric)
in afunc
kann auch das Lesen von Code erleichtern.Einzelheiten
Links
OperatingSystemVersion
Lösung
quelle
Double
für eine Versionsnummer, z. B.10.0999
anstelle von10.1
?var stringVersion = "10.0999"; print(stringVersion.toDouble!) // print 10.0999
, es wird gedruckt10.0999
und überprüfen Sie als
quelle
Der einfachste und einfachste Weg, die Systemversion (und viele andere Versionen) in Swift 2 und höher zu überprüfen, ist:
Außerdem
#available
können Sie Versionen davon überprüfen:quelle
Mattt Thompson teilt einen sehr praktischen Weg
quelle
Swift 4.x.
Verwendung:
PS KVISH Antwort übersetzt in Swift 4.x mit Umbenennen der Funktionen, da ich dieses Snippet speziell für die iOS-App verwende.
quelle
Hinweis: Verfügbar in iOS 8.0 und höher. OS X 10.10 und höher
quelle
Basierend auf der Antwort von Matt Thompson ist hier eine Methode mit entsprechenden Komponententests, die mit Swift und Objective-c unter iOS 7 und höher funktioniert (einschließlich iOS 9 , mit dem Sie die NSFoundationNumber nicht mehr überprüfen können ):
.
quelle
quelle
Auch wenn Sie WatchOS überprüfen möchten.
Schnell
Ziel c
quelle
Holen Sie sich die aktuelle Version des Systems und teilen Sie es. So können Sie Haupt- und Nebenversion erhalten.
quelle
Die meisten der hier geschriebenen Beispielcodes führen bei Versionen ohne Null zu unerwarteten Ergebnissen. Beispielsweise,
Diese Methode gibt mit der übergebenen Version "10.3.0" in iOS "10.3" nicht true zurück. Diese Art von Ergebnis ist nicht sinnvoll und muss als dieselbe Version angesehen werden. Um ein genaues Vergleichsergebnis zu erhalten, müssen wir alle Zahlenkomponenten in der Versionszeichenfolge vergleichen. Darüber hinaus ist die Bereitstellung globaler Methoden in Großbuchstaben kein guter Weg. Da der in unserem SDK verwendete Versionstyp ein String ist, ist es sinnvoll, die Vergleichsfunktionen in String zu erweitern.
Um die Systemversion zu vergleichen, sollten alle folgenden Beispiele funktionieren.
Sie können es in meinem Repository hier https://github.com/DragonCherry/VersionCompare überprüfen
quelle