Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- struct Hardware {
- let machine: String
- init() {
- machine = Hardware.getSystemInformation("hw.machine")
- }
- static func getSystemInformation(_ name: String) -> String {
- var size: Int = 0
- sysctlbyname(name, nil, &size, nil, 0)
- var info = [CChar](repeating: 0, count: size)
- sysctlbyname(name, &info, &size, nil, 0)
- return String(cString: info)
- }
- var model: String {
- switch machine {
- // iPhone
- case "iPhone1,1": return "iPhone"
- case "iPhone1,2": return "iPhone 3G"
- case "iPhone2,1": return "iPhone 3GS"
- case "iPhone3,1": return "iPhone 4 (GSM)"
- case "iPhone3,3": return "iPhone 4 (CDMA)"
- case "iPhone4,1": return "iPhone 4S"
- case "iPhone5,1": return "iPhone 5"
- case "iPhone5,2": return "iPhone 5"
- case "iPhone5,3": return "iPhone 5c"
- case "iPhone5,4": return "iPhone 5c"
- case "iPhone6,1": return "iPhone 5s"
- case "iPhone6,2": return "iPhone 5s"
- case "iPhone7,1": return "iPhone 6 Plus"
- case "iPhone7,2": return "iPhone 6"
- case "iPhone8,1": return "iPhone 6s"
- case "iPhone8,2": return "iPhone 6s Plus"
- case "iPhone8,4": return "iPhone SE"
- case "iPhone9,1": return "iPhone 7"
- case "iPhone9,2": return "iPhone 7 Plus"
- case "iPhone9,3": return "iPhone 7"
- case "iPhone9,4": return "iPhone 7 Plus"
- case "iPhone10,1": return "iPhone 8"
- case "iPhone10,2": return "iPhone 8 Plus"
- case "iPhone10,3": return "iPhone X"
- case "iPhone10,4": return "iPhone 8"
- case "iPhone10,5": return "iPhone 8 Plus"
- case "iPhone10,6": return "iPhone X"
- // iPod touch
- case "iPod1,1": return "iPod touch"
- case "iPod2,1": return "iPod touch (2nd gen)"
- case "iPod3,1": return "iPod touch (3rd gen)"
- case "iPod4,1": return "iPod touch (4th gen)"
- case "iPod5,1": return "iPod touch (5th gen)"
- case "iPod7,1": return "iPod touch (6th gen)"
- // iPad
- case "iPad1,1": return "iPad"
- case "iPad2,1": return "iPad 2 (Wi-Fi)"
- case "iPad2,2": return "iPad 2 (GSM)"
- case "iPad2,3": return "iPad 2 (CDMA)"
- case "iPad2,4": return "iPad 2 (Wi-Fi, Rev)"
- case "iPad2,5": return "iPad mini (Wi-Fi)"
- case "iPad2,6": return "iPad mini (GSM)"
- case "iPad2,7": return "iPad mini (CDMA)"
- case "iPad3,1": return "iPad (3rd gen, Wi-Fi)"
- case "iPad3,2": return "iPad (3rd gen, CDMA)"
- case "iPad3,3": return "iPad (3rd gen, GSM)"
- case "iPad3,4": return "iPad (4th gen, Wi-Fi)"
- case "iPad3,5": return "iPad (4th gen, GSM)"
- case "iPad3,6": return "iPad (4th gen, CDMA)"
- case "iPad4,1": return "iPad Air (Wi-Fi)"
- case "iPad4,2": return "iPad Air (Cellular)"
- case "iPad4,3": return "iPad Air (Rev)"
- case "iPad4,4": return "iPad mini 2 (Wi-Fi)"
- case "iPad4,5": return "iPad mini 2 (Cellular)"
- case "iPad4,6": return "iPad mini 2 (Rev)"
- case "iPad4,7": return "iPad mini 3 (Wi-Fi)"
- case "iPad4,8": return "iPad mini 3 (Cellular)"
- case "iPad4,9": return "iPad mini 3 (Cellular)"
- case "iPad5,1": return "iPad mini 4 (Wi-Fi)"
- case "iPad5,2": return "iPad mini 4 (Cellular)"
- case "iPad5,3": return "iPad Air 2 (Wi-Fi)"
- case "iPad5,4": return "iPad Air 2 (Cellular)"
- case "iPad6,3": return "iPad Pro (9.7-inch, Wi-Fi)"
- case "iPad6,4": return "iPad Pro (9.7-inch, Cellular)"
- case "iPad6,7": return "iPad Pro (12.9-inch, Wi-Fi)"
- case "iPad6,8": return "iPad Pro (12.9-inch, Cellular)"
- case "iPad6,11": return "iPad (5th gen, Wi-Fi)"
- case "iPad6,12": return "iPad (5th gen, Cellular)"
- case "iPad7,1": return "iPad Pro (12.9-inch, 2nd, Wi-Fi)"
- case "iPad7,2": return "iPad Pro (12.9-inch, 2nd, Cellular)"
- case "iPad7,3": return "iPad Pro (10.5-inch, Wi-Fi)"
- case "iPad7,4": return "iPad Pro (10.5-inch, Cellular)"
- case "iPad7,5": return "iPad (6th gen, Wi-Fi)"
- case "iPad7,6": return "iPad (6th gen, Cellular)"
- // Simulator
- case "i386", "x86_64": return "Simulator"
- default: return "Unknown Hardware \(machine)"
- }
- }
- }
Add Comment
Please, Sign In to add comment