extension NSProcessInfo { @available(iOS 8.0, *) public func systemVersionGreaterThanOrEqualTo(version: NSOperatingSystemVersion) -> Bool { return isOperatingSystemAtLeastVersion(version) } @available(iOS 8.0, *) public func systemVersionGreaterThan(version: NSOperatingSystemVersion) -> Bool { return systemVersionGreaterThanOrEqualTo(version) && !systemVersionEqualTo(version) } @available(iOS 8.0, *) public func systemVersionEqualTo(version: NSOperatingSystemVersion) -> Bool { return (systemVersionGreaterThanOrEqualTo(version) && !systemVersionGreaterThanOrEqualTo(incrementSystemVersion(version))) } @available(iOS 8.0, *) public func systemVersionLessThan(version: NSOperatingSystemVersion) -> Bool { return !systemVersionGreaterThanOrEqualTo(version) } @available(iOS 8.0, *) public func systemVersionLessThanOrEqualTo(version: NSOperatingSystemVersion) -> Bool { return systemVersionLessThan(version) || systemVersionEqualTo(version) } /// Increment minor OS version and drop 'patch' version (e.g.: 8.1.1 -> 8.2.0) private func incrementSystemVersion(var version: NSOperatingSystemVersion) -> NSOperatingSystemVersion { version.minorVersion++ version.patchVersion = 0 return version } } /* // Manual logical check let v = NSOperatingSystemVersion(majorVersion: 8, minorVersion: 4, patchVersion: 0) let greaterThanOrEqual = NSProcessInfo.processInfo().isOperatingSystemAtLeastVersion(v) let lessThan = !greaterThanOrEqual let equal = greaterThanOrEqual && !NSProcessInfo.processInfo().isOperatingSystemAtLeastVersion(incrementSystemVersion(v)) let lessThanOrEqual = lessThan || equal let greaterThan = greaterThanOrEqual && !equal dlog("<= < == > >= | \(NSProcessInfo.processInfo().operatingSystemVersionString)") dlog("\(lessThanOrEqual ? 1 : 0) \(lessThan ? 1 : 0) \(equal ? 1 : 0) \(greaterThan ? 1 : 0) \(greaterThanOrEqual ? 1 : 0)") dlog("\(NSProcessInfo.processInfo().systemVersionLessThanOrEqualTo(v) ? 1 : 0) \(NSProcessInfo.processInfo().systemVersionLessThan(v) ? 1 : 0) \(NSProcessInfo.processInfo().systemVersionEqualTo(v) ? 1 : 0) \(NSProcessInfo.processInfo().systemVersionGreaterThan(v) ? 1 : 0) \(NSProcessInfo.processInfo().systemVersionGreaterThanOrEqualTo(v) ? 1 : 0)") */