Apple does not provide an NS function for getting the device model. However, the following code can achieve task:
#include <sys/types.h>
#include <sys/sysctl.h>
- (NSString *)deviceName {
size_t size;
// get the size of the returned device name
sysctlbyname("hw.machine", NULL, &size, NULL, 0);
// Allocate the space to store name
char *name = malloc(size);
// Get the device name
sysctlbyname("hw.machine", name, &size, NULL, 0);
// Place the name into a NSString
NSString *platform= [NSString stringWithCString:name];
free(name);
if ([platform isEqualToString:@"iPhone1,1"]) return @"iPhone1G GSM";
if ([platform isEqualToString:@"iPhone1,2"]) return @"iPhone3G GSM";
if ([platform isEqualToString:@"iPhone2,1"]) return @"iPhone3GS GSM";
if ([platform isEqualToString:@"iPhone3,1"]) return @"iPhone4 GSM";
if ([platform isEqualToString:@"iPhone3,3"]) return @"iPhone4 CDMA";
if ([platform isEqualToString:@"iPhone4,1"]) return @"iPhone4S";
if ([platform isEqualToString:@"iPhone5,1"]) return @"iPhone5";
if ([platform isEqualToString:@"iPod1,1"]) return @"iPod 1G";
if ([platform isEqualToString:@"iPod2,1"]) return @"iPod 2G";
if ([platform isEqualToString:@"iPod3,1"]) return @"iPod 3G";
if ([platform isEqualToString:@"iPod4,1"]) return @"iPod 4G";
if ([platform isEqualToString:@"iPad1,1"]) return @"iPad WiFi";
if ([platform isEqualToString:@"iPad2,1"]) return @"iPad2 WiFi";
if ([platform isEqualToString:@"iPad2,2"]) return @"iPad2 GSM";
if ([platform isEqualToString:@"iPad2,3"]) return @"iPad2 CDMAV";
if ([platform isEqualToString:@"iPad2,4"]) return @"iPad2 CDMAS";
if ([platform isEqualToString:@"i386"]) return @"Simulator";
if ([platform isEqualToString:@"x86_64"]) return @"Simulator";
}