Untuk iOS, coba:
var systemVersion = UIDevice.current.systemVersion
Untuk OS X, coba:
var systemVersion = NSProcessInfo.processInfo().operatingSystemVersion
Jika Anda hanya ingin memeriksa apakah pengguna menjalankan setidaknya versi tertentu, Anda juga dapat menggunakan fitur Swift 2 berikut yang berfungsi pada iOS dan OS X:
if #available(iOS 9.0, *) {
// use the feature only available in iOS 9
// for ex. UIStackView
} else {
// or use some work around
}
TETAPI tidak disarankan untuk memeriksa versi OS. Lebih baik untuk memeriksa apakah fitur yang ingin Anda gunakan tersedia di perangkat daripada membandingkan nomor versi.
Untuk iOS, seperti yang disebutkan di atas, Anda harus memeriksa apakah itu menanggapi pemilih; misalnya.:
if (self.respondsToSelector(Selector("showViewController"))) {
self.showViewController(vc, sender: self)
} else {
// some work around
}
Pembaruan:
Sekarang Anda harus menggunakan pemeriksaan ketersediaan baru yang diperkenalkan dengan Swift 2:
mis. Untuk memeriksa iOS 9.0 atau lebih baru pada waktu kompilasi gunakan ini:
atau dapat digunakan dengan seluruh metode atau kelas
Untuk info lebih lanjut lihat ini .
Jalankan pemeriksaan waktu:
jika Anda tidak ingin versi yang pasti tetapi ingin memeriksa iOS 9,10 atau 11 menggunakan jika:
EDIT: Baru saja menemukan cara lain untuk mencapai ini:
sumber
Saya membuat fungsi pembantu yang ditransfer dari tautan di bawah ke swift:
Bagaimana kita bisa secara terprogram mendeteksi versi iOS yang menjalankan perangkat?
Dapat digunakan seperti:
Cepat 4.2
sumber
Cepat 5
Kami tidak perlu membuat ekstensi karena
ProcessInfo
memberi kami info versi. Anda dapat melihat kode sampel untuk iOS seperti di bawah ini.Referensi: http://nshipster.com/swift-system-version-checking/
sumber
Cepat 5
sumber
#available(...)
Blok menghentikan kompilator menampilkan kesalahan untuk kode di dalam yang tidak didukung di versi yang lebih lama dari yang disediakan.Saya membuat Singleton ini untuk penggunaan sederhana, membuat
IOSVersion.swift
file dan menambahkan kode ini:GUNAKAN:
Terima kasih @KVISH
Edit Swift 2:
sumber
static let shared = IOSVersion
Jika Anda menggunakan Swift 2 dan Anda ingin memeriksa versi OS untuk menggunakan API tertentu, Anda dapat menggunakan fitur ketersediaan baru:
Saya menulis jawaban ini karena ini adalah pertanyaan pertama di Google untuk
swift 2 check system version
kueri.sumber
Pembaruan untuk Swift 3.0+
sumber
ComparisonResult
untuk membuatnya lebih pendek.UIDevice.current.systemVersion.compare(version, options: .numeric)
memasukkan keluar ke dalamfunc
dapat membantu membaca kode.Detail
Tautan
OperatingSystemVersion
Larutan
sumber
Double
untuk nomor versi, misalnya10.0999
bukan10.1
?var stringVersion = "10.0999"; print(stringVersion.toDouble!) // print 10.0999
, itu akan dicetak10.0999
dan periksa sebagai
sumber
Cara termudah dan paling sederhana untuk memeriksa versi sistem (dan banyak versi lainnya) di Swift 2 dan lebih tinggi adalah:
Juga, dengan
#available
Anda dapat memeriksa versi ini:sumber
Mattt Thompson berbagi cara yang sangat praktis
sumber
Swift 4.x
Pemakaian:
Jawaban PS KVISH diterjemahkan ke Swift 4.x dengan mengganti nama fungsi karena saya secara khusus menggunakan cuplikan ini untuk aplikasi iOS.
sumber
Catatan: Tersedia di iOS 8.0 dan yang lebih baru. OS X v10.10 dan yang lebih baru
sumber
Berdasarkan jawaban Matt Thompson, berikut adalah metode dengan unit test masing-masing yang bekerja dengan Swift dan Objective-c di iOS 7 dan di atasnya (termasuk iOS 9 yang tidak lagi memungkinkan Anda memeriksa NSFoundationNumber ):
.
sumber
sumber
Juga jika Anda ingin memeriksa WatchOS.
Cepat
Objektif-C
sumber
Dapatkan versi sistem saat ini dan bagilah. Jadi Anda bisa mendapatkan versi mayor dan minor.
sumber
Sebagian besar kode sampel yang ditulis di sini akan mendapatkan hasil yang tidak terduga dengan versi ekstra nol. Sebagai contoh,
Metode ini tidak akan kembali benar dengan versi yang lulus "10.3.0" di iOS "10.3". Hasil semacam ini tidak masuk akal dan mereka harus dianggap sebagai versi yang sama. Untuk mendapatkan hasil perbandingan yang akurat, kita harus mempertimbangkan membandingkan semua komponen angka dalam string versi. Plus, memberikan metode global dalam semua huruf kapital bukan cara yang baik untuk pergi. Karena tipe versi yang kami gunakan di SDK kami adalah sebuah String, masuk akal untuk memperluas fungsi membandingkan dalam String.
Untuk membandingkan versi sistem, semua contoh berikut harus berfungsi.
Anda dapat memeriksanya di repositori saya di sini https://github.com/DragonCherry/VersionCompare
sumber