Was sind alle möglichen Werte, die von [[UIDevice currentDevice] model];
zurückgegeben werden? Es ist nicht documented.UIDevice currentDevice Modell mögliche Werte
Antwort
Die möglichen vales sind iPod touch
, iPhone
, iPhone Simulator
, iPad
, iPad Simulator
Wenn Sie wissen möchten, welche Hardware iOS
ruiniert auf wie iPhone3
, iPhone4
, iPhone5
etc unten ist der Code für das
HINWEIS: Der folgende Code enthält möglicherweise nicht alle Devi ce Streichquartette, ich bin mit den anderen Jungs den gleichen Code auf GitHub Aufrechterhaltung so wenden Sie sich bitte von dort den neuesten Code nehmen
Objective-C: GitHub/DeviceUtil
Swift: GitHub/DeviceGuru
#include <sys/types.h>
#include <sys/sysctl.h>
- (NSString*)hardwareDescription {
NSString *hardware = [self hardwareString];
if ([hardware isEqualToString:@"iPhone1,1"]) return @"iPhone 2G";
if ([hardware isEqualToString:@"iPhone1,2"]) return @"iPhone 3G";
if ([hardware isEqualToString:@"iPhone3,1"]) return @"iPhone 4";
if ([hardware isEqualToString:@"iPhone4,1"]) return @"iPhone 4S";
if ([hardware isEqualToString:@"iPhone5,1"]) return @"iPhone 5";
if ([hardware isEqualToString:@"iPod1,1"]) return @"iPodTouch 1G";
if ([hardware isEqualToString:@"iPod2,1"]) return @"iPodTouch 2G";
if ([hardware isEqualToString:@"iPad1,1"]) return @"iPad";
if ([hardware isEqualToString:@"iPad2,6"]) return @"iPad Mini";
if ([hardware isEqualToString:@"iPad4,1"]) return @"iPad Air WIFI";
//there are lots of other strings too, checkout the github repo
//link is given at the top of this answer
if ([hardware isEqualToString:@"i386"]) return @"Simulator";
if ([hardware isEqualToString:@"x86_64"]) return @"Simulator";
return nil;
}
- (NSString*)hardwareString {
size_t size = 100;
char *hw_machine = malloc(size);
int name[] = {CTL_HW,HW_MACHINE};
sysctl(name, 2, hw_machine, &size, NULL, 0);
NSString *hardware = [NSString stringWithUTF8String:hw_machine];
free(hw_machine);
return hardware;
}
Ich habe gerade einen Test auf iPod Touch, iPhone, Handy Retina, iPhone 5, iPad, iPad Retina und iPad Mini gemacht. Das ist also mein Fazit:
iPod touch
iPhone
iPad
Auf Simulatoren - dies nützlich sein könnte, wenn Sie einen Entwickler arbeitet an Funktionen sind, die manchmal gar nicht an Simulatoren arbeiten - Sie werden diese Werte erhalten:
iPhone Simulator
iPad Simulator
Sie haben die Simulatoren vergessen ... – andreas
Ah, die eigentliche Antwort auf die gepostete Frage! Vielen Dank. Ich habe mich speziell gefragt, ob das iPad Mini angezeigt werden würde und hatte kein Handy (und es wird nicht im XCode-Simulator unterstützt), und das hat darauf geantwortet. – BobDickinson
Wer kennt die Werte für AppleTV? – ColdLogic
Ich glaube die beste Antwort zu erklären (etwas, das hier nicht geschrieben wurde) Ist zu sagen, dass der Wert selbst ein String-Wert ist. und die möglichen Antworten sind z. B.: "iPhone", "iPad" und etc ..
Keine dieser Antworten sind erweiterbar für neue Modellnummern. Hier ist eine Aufzählung:
public enum DeviceType {
case iPad(String?)
case iPhone(String?)
case simulator(String?)
case appleTV(String?)
case unknown
}
Und Erweiterung Ich schrieb, dass ich denke, ist ein wenig saubere und ein wenig mehr erweiterbar für, wenn neue Modellnummer heraus.
extension UIDevice {
public static func getDevice() -> DeviceType {
var info = utsname()
uname(&info)
let machineMirror = Mirror(reflecting: info.machine)
let code = machineMirror.children.reduce("") { identifier, element in
guard let value = element.value as? Int8, value != 0 else {
return identifier
}
return identifier + String(UnicodeScalar(UInt8(value)))
}
if code.lowercased().range(of: "ipad") != nil {
if let range = code.lowercased().range(of: "ipad") {
var mutate = code
mutate.removeSubrange(range)
return .iPad(mutate)
}else{
return .iPad(nil)
}
}else if code.lowercased().range(of: "iphone") != nil {
if let range = code.lowercased().range(of: "iphone") {
var mutate = code
mutate.removeSubrange(range)
return .iPhone(mutate)
}else{
return .iPhone(nil)
}
}else if code.lowercased().range(of: "i386") != nil || code.lowercased().range(of: "x86_64") != nil{
return .simulator(code)
}else if code.lowercased().range(of: "appletv") != nil {
if let range = code.lowercased().range(of: "appletv") {
var mutate = code
mutate.removeSubrange(range)
return .appleTV(mutate)
}else{
return .appleTV(nil)
}
}else{
return .unknown
}
}
}
- 1. Führe mich auf UIDevice currentDevice
- 2. UIDevice currentDevice "Orientierung" immer Null
- 3. Wie erkennt man, ob externe Bibliotheken [UIDevice currentDevice] uniqueIdentifier] aufrufen?
- 4. Senden von iphone [[UIDevice CurrentDevice] Name] über das Netzwerk
- 5. UIDevice Orientierung
- 6. UIDevice Orientierung Rückkehr nicht den richtigen Wert
- 7. SQL-Abfrage für zwei mögliche Werte?
- 8. Mögliche Arten von $ _POST und $ _GET Werte
- 9. Mögliche Werte von @PathParam zu WADL einschließen
- 10. Resources.getIdentifier(), mögliche Werte des DefType-Arguments?
- 11. Mögliche Werte für die „java.compiler“ Systemeigenschaft
- 12. So behandeln Sie mit `Verwendung von undeclear Kennung von UIDevice`
- 13. Modell nicht Rendering-Modell Werte nach
- 14. iPad Orientierung gibt unbekannte Werte
- 15. Magento Modell speichert keine Werte
- 16. UIDevice funktioniert nicht in schnellen 2,0
- 17. Mögliche verlustreiche Konvertierung von Double in Float, Float-Werte gegeben?
- 18. Wie kann ich mögliche Werte in einer MySQL-Datenbank finden?
- 19. Spott, um mehrere mögliche Werte zu einer Erwartung zu definieren
- 20. Mögliche Werte der current_session_context_class -Eigenschaft im Ruhezustand und verwendet
- 21. Mögliche Zahlungsstatuswerte
- 22. Mögliche Korrelationsunterabfragen
- 23. Werte in MongoDB Modell in NodeJS
- 24. MVC vergleichen 2 Werte in Modell
- 25. negative Werte in Ganzzahl Programmierung Modell
- 26. Z3/Python bekommen Python-Werte von Modell
- 27. django kann nicht Modell Auswahl ausgewählte Werte
- 28. Einstellung Model Werte in benutzerdefinierten Modell Binder
- 29. Erfassen alter Werte für Modell in MVC3?
- 30. Quering unterschiedliche Werte throught verwandten Modell
Ich bin gespannt, warum das akzeptiert wurde. Es beantwortet die Frage überhaupt nicht. – rmaddy
Es sieht für mich so aus, aber auf Umwegen. – tomasmcguinness
@Inder Kumar Rathore, in iOS 6.1 ist diese Funktion nicht perfekt. In 1 Fall von 3, kann dann einen anderen Wert zurückgeben – CReaTuS