2015-11-03 18 views
7

Ci sono molte soluzioni per scoprire su quale dispositivo è in esecuzione l'app.Come ottenere il tipo Iphone dal simulatore (IOS)

iOS: How to determine the current iPhone/device model in Swift?

Ma in esecuzione nel simulatore, abbiamo appena in grado di rilevare che è il simulatore, ma non quello che tipo di simulatore (iphone5,6,6s etc.)

Come possiamo testare diverse logiche a seconda del tipo di dispositivo con il simulatore? O come posso rilevare quale dispositivo è simulato nel codice?

risposta

12

Sulla base delle risposte che ho trovato here e here, ho scritto questa piccola funzione di Swift per voi:

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)") 
} 

sto ottenendo il risultato di "iPhone8,2", che converte in un iPhone 6+ , che è ciò a cui è impostato il mio simulatore.

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

E se si desidera eliminare l'avviso del compilatore per l'utilizzo della magia "DEVICE_IS_SIMULATOR", here's a better solution in the form of a class.

+0

Grazie mille per l'aiuto. –

Problemi correlati