Guest User

Untitled

a guest
Mar 17th, 2018
116
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.61 KB | None | 0 0
  1. public enum Model : String {
  2. case simulator = "simulator/sandbox",
  3. iPod1 = "iPod 1",
  4. iPod2 = "iPod 2",
  5. iPod3 = "iPod 3",
  6. iPod4 = "iPod 4",
  7. iPod5 = "iPod 5",
  8. iPad2 = "iPad 2",
  9. iPad3 = "iPad 3",
  10. iPad4 = "iPad 4",
  11. iPad5 = "iPad 5",
  12. iPhone4 = "iPhone 4",
  13. iPhone4S = "iPhone 4S",
  14. iPhone5 = "iPhone 5",
  15. iPhone5S = "iPhone 5S",
  16. iPhone5C = "iPhone 5C",
  17. iPadMini1 = "iPad Mini 1",
  18. iPadMini2 = "iPad Mini 2",
  19. iPadMini3 = "iPad Mini 3",
  20. iPadAir1 = "iPad Air 1",
  21. iPadAir2 = "iPad Air 2",
  22. iPadPro9_7 = "iPad Pro 9.7\"",
  23. iPadPro9_7_cell = "iPad Pro 9.7\" cellular",
  24. iPadPro12_9 = "iPad Pro 12.9\"",
  25. iPadPro12_9_cell = "iPad Pro 12.9\" cellular",
  26. iPadPro2_12_9 = "iPad Pro 2 12.9\"",
  27. iPadPro2_12_9_cell = "iPad Pro 2 12.9\" cellular",
  28. iPhone6 = "iPhone 6",
  29. iPhone6plus = "iPhone 6 Plus",
  30. iPhone6S = "iPhone 6S",
  31. iPhone6Splus = "iPhone 6S Plus",
  32. iPhoneSE = "iPhone SE",
  33. iPhone7 = "iPhone 7",
  34. iPhone7plus = "iPhone 7 Plus",
  35. iPhone8 = "iPhone 8",
  36. iPhone8plus = "iPhone 8 Plus",
  37. iPhoneX = "iPhone X",
  38. unrecognized = "?unrecognized?"
  39. }
  40.  
  41. // #-#-#-#-#-#-#-#-#-#-#-#-#-#-#
  42. //MARK: UIDevice extensions
  43. // #-#-#-#-#-#-#-#-#-#-#-#-#-#-#
  44.  
  45. public extension UIDevice {
  46. public var type: Model {
  47. var systemInfo = utsname()
  48. uname(&systemInfo)
  49. let modelCode = withUnsafePointer(to: &systemInfo.machine) {
  50. $0.withMemoryRebound(to: CChar.self, capacity: 1) {
  51. ptr in String.init(validatingUTF8: ptr)
  52.  
  53. }
  54. }
  55. var modelMap : [ String : Model ] = [
  56. "i386" : .simulator,
  57. "x86_64" : .simulator,
  58. "iPod1,1" : .iPod1,
  59. "iPod2,1" : .iPod2,
  60. "iPod3,1" : .iPod3,
  61. "iPod4,1" : .iPod4,
  62. "iPod5,1" : .iPod5,
  63. "iPad2,1" : .iPad2,
  64. "iPad2,2" : .iPad2,
  65. "iPad2,3" : .iPad2,
  66. "iPad2,4" : .iPad2,
  67. "iPad2,5" : .iPadMini1,
  68. "iPad2,6" : .iPadMini1,
  69. "iPad2,7" : .iPadMini1,
  70. "iPhone3,1" : .iPhone4,
  71. "iPhone3,2" : .iPhone4,
  72. "iPhone3,3" : .iPhone4,
  73. "iPhone4,1" : .iPhone4S,
  74. "iPhone5,1" : .iPhone5,
  75. "iPhone5,2" : .iPhone5,
  76. "iPhone5,3" : .iPhone5C,
  77. "iPhone5,4" : .iPhone5C,
  78. "iPad3,1" : .iPad3,
  79. "iPad3,2" : .iPad3,
  80. "iPad3,3" : .iPad3,
  81. "iPad3,4" : .iPad4,
  82. "iPad3,5" : .iPad4,
  83. "iPad3,6" : .iPad4,
  84. "iPhone6,1" : .iPhone5S,
  85. "iPhone6,2" : .iPhone5S,
  86. "iPad4,2" : .iPadAir1,
  87. "iPad5,4" : .iPadAir2,
  88. "iPad4,4" : .iPadMini2,
  89. "iPad4,5" : .iPadMini2,
  90. "iPad4,6" : .iPadMini2,
  91. "iPad4,7" : .iPadMini3,
  92. "iPad4,8" : .iPadMini3,
  93. "iPad4,9" : .iPadMini3,
  94. "iPad6,3" : .iPadPro9_7,
  95. "iPad6,4" : .iPadPro9_7_cell,
  96. "iPad6,12" : .iPad5,
  97. "iPad6,7" : .iPadPro12_9,
  98. "iPad6,8" : .iPadPro12_9_cell,
  99. "iPad7,1" : .iPadPro2_12_9,
  100. "iPad7,2" : .iPadPro2_12_9_cell,
  101. "iPhone7,1" : .iPhone6plus,
  102. "iPhone7,2" : .iPhone6,
  103. "iPhone8,1" : .iPhone6S,
  104. "iPhone8,2" : .iPhone6Splus,
  105. "iPhone8,4" : .iPhoneSE,
  106. "iPhone9,1" : .iPhone7,
  107. "iPhone9,2" : .iPhone7plus,
  108. "iPhone9,3" : .iPhone7,
  109. "iPhone9,4" : .iPhone7plus,
  110. "iPhone10,1" : .iPhone8,
  111. "iPhone10,2" : .iPhone8plus,
  112. "iPhone10,3" : .iPhoneX,
  113. "iPhone10,4" : .iPhone8,
  114. "iPhone10,5" : .iPhone8plus,
  115. "iPhone10,6" : .iPhoneX
  116. ]
  117.  
  118. if let model = modelMap[String.init(validatingUTF8: modelCode!)!] {
  119. if model == .simulator {
  120. if let simModelCode = ProcessInfo().environment["SIMULATOR_MODEL_IDENTIFIER"] {
  121. if let simModel = modelMap[String.init(validatingUTF8: simModelCode)!] {
  122. return simModel
  123. }
  124. }
  125. }
  126. return model
  127. }
  128. return Model.unrecognized
  129. }
  130. }
Add Comment
Please, Sign In to add comment