ใช้ UIDevice.current.systemVersion เพื่อดึง iOS Version เป็น String
โค้ดพื้นฐาน
print("iOS Version: \(UIDevice.current.systemVersion)")
// Output: "iOS Version: 17.2.1"
แปลงเป็น Version Object เพื่อเปรียบเทียบ
let version = UIDevice.current.systemVersion
let versionNumber = (version as NSString).floatValue
if versionNumber >= 17.0 {
print("iOS 17+ features available")
} else if versionNumber >= 15.0 {
print("iOS 15+ features available")
}
ใช้ OperatingSystemVersion (แนะนำ)
let osVersion = ProcessInfo.processInfo.operatingSystemVersion
print("Major: \(osVersion.majorVersion), Minor: \(osVersion.minorVersion), Patch: \(osVersion.patchVersion)")
// ตรวจสอบ Version
if #available(iOS 17, *) {
// iOS 17+ only code
} else {
// Fallback
}
// หรือ
if ProcessInfo.processInfo.isOperatingSystemAtLeast(OperatingSystemVersion(majorVersion: 17, minorVersion: 0, patchVersion: 0)) {
print("iOS 17 or later")
}
Extension ใช้งานง่าย
extension UIDevice {
var iOSVersion: String { systemVersion }
var majorVersion: Int {
return Int(systemVersion.split(separator: ".").first ?? "0") ?? 0
}
func isVersionAtLeast(_ major: Int, _ minor: Int = 0, _ patch: Int = 0) -> Bool {
return ProcessInfo.processInfo.isOperatingSystemAtLeast(
OperatingSystemVersion(majorVersion: major, minorVersion: minor, patchVersion: patch)
)
}
}
// ใช้งาน
UIDevice.current.iOSVersion // "17.2.1"
UIDevice.current.majorVersion // 17
UIDevice.current.isVersionAtLeast(16) // true
UIDevice.current.isVersionAtLeast(17, 2) // true
Compile-time Check (#available)
if #available(iOS 17, *) {
// Code ที่ compile เฉพาะ iOS 17+
// ใช้ API ใหม่ได้ปลอดภัย
} else {
// Fallback สำหรับ iOS เก่า
}
แนะนำ: ใช้ #available สำหรับ API ใหม่ ใช้ ProcessInfo สำหรับ Runtime Logic