21

によって返されるすべての可能な値は何[[UIDevice currentDevice] model];ですか? 文書化されていません 。

4

4 に答える 4

41

可能な値iPod touchは、、、、、iPhoneiPhone SimulatoriPadiPad Simulator

、などのようにどのハードウェアiOSが台無しになっているのかを知りたい場合は、以下がそのコードですiPhone3iPhone4iPhone5


注:以下のコードには、すべてのデバイスの文字列が含まれているとは限りません。他の人がGitHubで同じコードを維持しているので、そこから最新のコードを取得してください。

Objective-C : GitHub/DeviceUtil

スウィフト: 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;
}
于 2013-01-19T04:33:28.500 に答える
23

iPod Touch、iPhone、Phone Retina、iPhone 5、iPad、iPad Retina、iPad Mini でテストを行いました。これが私の結論です:

iPod touch
iPhone
iPad

シミュレーターでは、これは、シミュレーターではまったく機能しない機能に取り組んでいる開発者の場合に役立ちます。次の値が得られます。

iPhone Simulator
iPad Simulator
于 2013-05-15T14:36:54.773 に答える
0

説明するための最良の答え(ここに書かれていないこと)は、値自体が文字列値であると言うことだと思います。可能な答えは文字列です。たとえば、「iPhone」、「iPad」などです。

于 2016-09-14T19:45:25.693 に答える