Guest User

Untitled

a guest
Jun 25th, 2018
94
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.55 KB | None | 0 0
  1. struct Hardware {
  2.  
  3. let machine: String
  4.  
  5. init() {
  6. machine = Hardware.getSystemInformation("hw.machine")
  7. }
  8.  
  9. static func getSystemInformation(_ name: String) -> String {
  10. var size: Int = 0
  11. sysctlbyname(name, nil, &size, nil, 0)
  12. var info = [CChar](repeating: 0, count: size)
  13. sysctlbyname(name, &info, &size, nil, 0)
  14. return String(cString: info)
  15. }
  16.  
  17. var model: String {
  18. switch machine {
  19.  
  20. // iPhone
  21. case "iPhone1,1": return "iPhone"
  22. case "iPhone1,2": return "iPhone 3G"
  23. case "iPhone2,1": return "iPhone 3GS"
  24. case "iPhone3,1": return "iPhone 4 (GSM)"
  25. case "iPhone3,3": return "iPhone 4 (CDMA)"
  26. case "iPhone4,1": return "iPhone 4S"
  27. case "iPhone5,1": return "iPhone 5"
  28. case "iPhone5,2": return "iPhone 5"
  29. case "iPhone5,3": return "iPhone 5c"
  30. case "iPhone5,4": return "iPhone 5c"
  31. case "iPhone6,1": return "iPhone 5s"
  32. case "iPhone6,2": return "iPhone 5s"
  33. case "iPhone7,1": return "iPhone 6 Plus"
  34. case "iPhone7,2": return "iPhone 6"
  35. case "iPhone8,1": return "iPhone 6s"
  36. case "iPhone8,2": return "iPhone 6s Plus"
  37. case "iPhone8,4": return "iPhone SE"
  38. case "iPhone9,1": return "iPhone 7"
  39. case "iPhone9,2": return "iPhone 7 Plus"
  40. case "iPhone9,3": return "iPhone 7"
  41. case "iPhone9,4": return "iPhone 7 Plus"
  42. case "iPhone10,1": return "iPhone 8"
  43. case "iPhone10,2": return "iPhone 8 Plus"
  44. case "iPhone10,3": return "iPhone X"
  45. case "iPhone10,4": return "iPhone 8"
  46. case "iPhone10,5": return "iPhone 8 Plus"
  47. case "iPhone10,6": return "iPhone X"
  48.  
  49. // iPod touch
  50. case "iPod1,1": return "iPod touch"
  51. case "iPod2,1": return "iPod touch (2nd gen)"
  52. case "iPod3,1": return "iPod touch (3rd gen)"
  53. case "iPod4,1": return "iPod touch (4th gen)"
  54. case "iPod5,1": return "iPod touch (5th gen)"
  55. case "iPod7,1": return "iPod touch (6th gen)"
  56.  
  57. // iPad
  58. case "iPad1,1": return "iPad"
  59. case "iPad2,1": return "iPad 2 (Wi-Fi)"
  60. case "iPad2,2": return "iPad 2 (GSM)"
  61. case "iPad2,3": return "iPad 2 (CDMA)"
  62. case "iPad2,4": return "iPad 2 (Wi-Fi, Rev)"
  63. case "iPad2,5": return "iPad mini (Wi-Fi)"
  64. case "iPad2,6": return "iPad mini (GSM)"
  65. case "iPad2,7": return "iPad mini (CDMA)"
  66. case "iPad3,1": return "iPad (3rd gen, Wi-Fi)"
  67. case "iPad3,2": return "iPad (3rd gen, CDMA)"
  68. case "iPad3,3": return "iPad (3rd gen, GSM)"
  69. case "iPad3,4": return "iPad (4th gen, Wi-Fi)"
  70. case "iPad3,5": return "iPad (4th gen, GSM)"
  71. case "iPad3,6": return "iPad (4th gen, CDMA)"
  72. case "iPad4,1": return "iPad Air (Wi-Fi)"
  73. case "iPad4,2": return "iPad Air (Cellular)"
  74. case "iPad4,3": return "iPad Air (Rev)"
  75. case "iPad4,4": return "iPad mini 2 (Wi-Fi)"
  76. case "iPad4,5": return "iPad mini 2 (Cellular)"
  77. case "iPad4,6": return "iPad mini 2 (Rev)"
  78. case "iPad4,7": return "iPad mini 3 (Wi-Fi)"
  79. case "iPad4,8": return "iPad mini 3 (Cellular)"
  80. case "iPad4,9": return "iPad mini 3 (Cellular)"
  81. case "iPad5,1": return "iPad mini 4 (Wi-Fi)"
  82. case "iPad5,2": return "iPad mini 4 (Cellular)"
  83. case "iPad5,3": return "iPad Air 2 (Wi-Fi)"
  84. case "iPad5,4": return "iPad Air 2 (Cellular)"
  85. case "iPad6,3": return "iPad Pro (9.7-inch, Wi-Fi)"
  86. case "iPad6,4": return "iPad Pro (9.7-inch, Cellular)"
  87. case "iPad6,7": return "iPad Pro (12.9-inch, Wi-Fi)"
  88. case "iPad6,8": return "iPad Pro (12.9-inch, Cellular)"
  89. case "iPad6,11": return "iPad (5th gen, Wi-Fi)"
  90. case "iPad6,12": return "iPad (5th gen, Cellular)"
  91. case "iPad7,1": return "iPad Pro (12.9-inch, 2nd, Wi-Fi)"
  92. case "iPad7,2": return "iPad Pro (12.9-inch, 2nd, Cellular)"
  93. case "iPad7,3": return "iPad Pro (10.5-inch, Wi-Fi)"
  94. case "iPad7,4": return "iPad Pro (10.5-inch, Cellular)"
  95. case "iPad7,5": return "iPad (6th gen, Wi-Fi)"
  96. case "iPad7,6": return "iPad (6th gen, Cellular)"
  97.  
  98. // Simulator
  99. case "i386", "x86_64": return "Simulator"
  100.  
  101. default: return "Unknown Hardware \(machine)"
  102. }
  103. }
  104.  
  105. }
Add Comment
Please, Sign In to add comment