[[UIDevice currentDevice] model];
tarafından döndürülen olası tüm değerler nelerdir? documented değil.UIDevice currentDevice model olası değerler
cevap
olası valflann iPod touch
, iPhone
, iPhone Simulator
, iPad
, iPad Simulator
Eğer iPhone3
gibi üzerinde mahvediyor hangi donanım iOS
bilmek istiyorsanız, iPhone4
, iPhone5
vb aşağıda o
NOT: Aşağıdaki kod tüm sapmaları içermeyebilir 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;
}
CE'nin dize, başka adamlar çok
Objective-C oradan son kod atın GitHub'dan aynı kodu muhafaza edilir beraberim
Sadece iPod Touch, iPhone, Telefon Retina, iPhone 5, iPad, iPad Retina ve iPad Mini'de bir test yaptım.
iPhone Simulator
iPad Simulator
: - bazen simülatörleri üzerinde hiç çalışmıyor özelliklere çalışan bir geliştirici iseniz bu yararlı olabilir - Eğer bu değerler alırsınız
similatörlerinde
iPod touch
iPhone
iPad
: Yani bu benim sonuç olduğunu
Simülatörleri unuttun ... – andreas
Ah, yayınlanan soruya gerçek cevap! Teşekkürler. Özellikle iPad Mini'nin gösterilip gösterilmeyeceğini ve bir tane kullanışlı olmadığını (ve XCode simülatöründe desteklenmediğini) merak ettim ve bunu yanıtladı. – BobDickinson
AppleTV değerlerini bilen var mı? – ColdLogic
Açıklamak için en iyi cevaba inanıyorum (burada yazılmayan bir şey) Değerin kendisinin bir String değeri olduğunu söylemek gerekir. ve olası cevaplar, örneğin: "iPhone", "iPad" ve benzerleridir.
Bu cevapların hiçbiri yeni model numaraları için genişletilemez. İşte bir numaralandırma geçerli:
public enum DeviceType {
case iPad(String?)
case iPhone(String?)
case simulator(String?)
case appleTV(String?)
case unknown
}
Ve Uzatma ben biraz daha temiz ve yeni model numarası çıkması için biraz daha uzatılabilir olduğunu düşünüyorum yazdı.
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. Olası değerler mülkiyet
- 2. CreateParams.Style için olası değerler nelerdir?
- 3. 'UIDevice' und undllear tanımlayıcısının kullanımı ile nasıl başa çıkılır
- 4. Java'da olası tüm değerler nasıl alınır? (Enum'u bilmeden)
- 5. Haskell System.Info "os" işlevi için olası değerler nelerdir?
- 6. Raylar Uluslararasılaştırma (I18n) model validasyonlarda: Olası ya da değil?
- 7. Olası hata
- 8. yeni değerler
- 9. Bölünmüş değerler
- 10. Değerler
- 11. Boş değerler için varsayılan değerler
- 12. iOS yerel yolu dosyaları olası olası uygulamalara paylaşmak için
- 13. MySQL'te olası olası maksimum MATCH değeri ('...' NATURAL DİL MODU) nedir?
- 14. Döngüsel FPS damlalarının olası nedenleri?
- 15. javascript'te olası web protokolleri
- 16. Olası SABUN sürüm uyuşmazlığı
- 17. Olası Fraksiyon Kaybı
- 18. ReSharper "Olası NullReferenceException" yanlış?
- 19. Olası tüm yedekleri üret
- 20. olası karakter değişkenleri
- 21. Olası URL'yi kodlama sorunları
- 22. Olası Ayrıştırma eşleşmeleriKeyInQuery
- 23. Normal İfade - olası
- 24. ConcurrentBag içinde olası ezbere?
- 25. Olası yolları/süreç
- 26. Model
- 27. Model
- 28. Model
- 29. Model
- 30. Model
Bunun neden kabul edildiğini merak ediyorum. Bu soruya hiç cevap vermiyor. – rmaddy
Bana öyle görünüyor, ama dolambaçlı bir şekilde. – tomasmcguinness
@Inder Kumar Rathore, iOS 6.1'de bu func tam olarak çalışmıyor. 3 durumda 1, sonra başka bir değer dönebilir – CReaTuS