Guest User

Untitled

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