How to get the Iphone type from simulator (IOS)

Solutions Collect From Internet About “How to get the Iphone type from simulator (IOS)”

Based on the answers I found here and here, I wrote this little Swift function for you:

func getPlatformNSString() {
    #if (arch(i386) || arch(x86_64)) && os(iOS)
        let DEVICE_IS_SIMULATOR = true
    #else
        let DEVICE_IS_SIMULATOR = false
    #endif

    var machineSwiftString : String = ""

    if DEVICE_IS_SIMULATOR == true
    {
        // this neat trick is found at http://kelan.io/2015/easier-getenv-in-swift/
        if let dir = NSProcessInfo().environment["SIMULATOR_MODEL_IDENTIFIER"] {
            machineSwiftString = dir
        }
    } else {
        var size : size_t = 0
        sysctlbyname("hw.machine", nil, &size, nil, 0)
        var machine = [CChar](count: Int(size), repeatedValue: 0)
        sysctlbyname("hw.machine", &machine, &size, nil, 0)
        machineSwiftString = String.fromCString(machine)!
    }

    print("machine is \(machineSwiftString)")
}

I’m getting a result of “iPhone8,2”, which converts to an iPhone 6+, which is what my simulator is set to.

There’s open source code available that you can use that would convert strings like “iPhone8,2” to the proper iPhone model name.

And if you want to get rid of the compiler warning for using the “DEVICE_IS_SIMULATOR” magic, here’s a better solution in the form of a class.