2017-06-15 23 views
2

我想檢測測試設備是iPod還是iPhone。現在,我正在使用此代碼。
如何用Swift 3檢測iPod和iPhone設備?

if (UIDevice.current.userInterfaceIdiom == UIUserInterfaceIdiom.pad) 
    { debugPrint("ipad show") 

    } 
    else 
    { 
     debugPrint("ipod show") 
    } 

當我用iPhone 7測試時,它會顯示iPod。所以,我想檢測它是iPod還是iPhone。
我不想安裝任何額外的容器來實現此目的。
我想用簡單和短代碼來實現它。
任何人都可以幫助我嗎?

+0

有一個相對的話題已經在stacjoverflow [此鏈接](https://stackoverflow.com/questions/24059327/detect-current-device-with- ui-user-interface-idiom-in-swift) –

+0

是的。我看到那個帖子。但是,它不包括差異化的iPod和iPhone。 –

+0

[iOS:如何確定Swift中當前的iPhone /設備模型?]的可能重複(https://stackoverflow.com/questions/26028918/ios-how-to-determine-the-current-iphone-device-model -in-swift) –

回答

4

您可以通過一個擴展的UIDevice樣更好地得到它:

public extension UIDevice { 

var modelName: String { 
    var systemInfo = utsname() 
    uname(&systemInfo) 
    let machineMirror = Mirror(reflecting: systemInfo.machine) 
    let identifier = machineMirror.children.reduce("") { identifier, element in 
     guard let value = element.value as? Int8, value != 0 else { return identifier } 
     return identifier + String(UnicodeScalar(UInt8(value))) 
    } 

    switch identifier { 
    case "iPod5,1":         return "iPod Touch 5" 
    case "iPod7,1":         return "iPod Touch 6" 
    case "iPhone3,1", "iPhone3,2", "iPhone3,3":  return "iPhone 4" 
    case "iPhone4,1":        return "iPhone 4s" 
    case "iPhone5,1", "iPhone5,2":     return "iPhone 5" 
    case "iPhone5,3", "iPhone5,4":     return "iPhone 5c" 
    case "iPhone6,1", "iPhone6,2":     return "iPhone 5s" 
    case "iPhone7,2":        return "iPhone 6" 
    case "iPhone7,1":        return "iPhone 6 Plus" 
    case "iPhone8,1":        return "iPhone 6s" 
    case "iPhone9,1", "iPhone9,3":     return "iPhone 7" 
    case "iPhone9,2", "iPhone9,4":     return "iPhone 7 Plus" 
    case "i386", "x86_64":       return "Simulator" 
    case "iPad2,1", "iPad2,2", "iPad2,3", "iPad2,4":return "iPad 2" 
    case "iPad3,1", "iPad3,2", "iPad3,3":   return "iPad 3" 
    case "iPad3,4", "iPad3,5", "iPad3,6":   return "iPad 4" 
    case "iPad4,1", "iPad4,2", "iPad4,3":   return "iPad Air" 
    case "iPad5,3", "iPad5,4":      return "iPad Air 2" 
    case "iPad2,5", "iPad2,6", "iPad2,7":   return "iPad Mini" 
    case "iPad4,4", "iPad4,5", "iPad4,6":   return "iPad Mini 2" 
    case "iPad4,7", "iPad4,8", "iPad4,9":   return "iPad Mini 3" 
    case "iPad5,1", "iPad5,2":      return "iPad Mini 4" 
    case "iPad6,7", "iPad6,8":      return "iPad Pro" 
    case "AppleTV5,3":        return "Apple TV" 
    case "i386", "x86_64":       return "Simulator" 
    default:          return identifier 
    } 
    } 
} 

用法:UIDevice.current.modelName 這將返回字符串的設備模型。

嘗試使用它喜歡:

if UIDevice.current.modelName == "Simulator" { 
    print("Simulator") 
} 
else { 
    print("Real Device") 
} 
+0

如何檢查?請你能詳細告訴我兄弟嗎? –

+0

我也寫過使用它只是調用UIDevice.modelName它會返回你當前的設備型號名稱天氣它是iPhone,iPad,iPod的Apple TV或模擬器簡單。 –

+0

感謝兄弟。我不清楚。對於我的情況,我想檢查iPod或iPhone。所以,如果UIDevice.current.modelName == 「的iPod Touch 5」{ 打印( 「的iPod Touch 5」) } 其他{ 打印( 「真實設備」) } 我應該檢查這個樣子?那麼,我需要再次編寫iPod Touch 6? –