iOS 8 Code Working on iPhone 5S But Not iPhone 5

iOS 8 setValuesForKeysWithDictionary fails on iPhone 5 / iPhone 4s

One issue that could arise is if you had your properties mistyped when you were deserializing from JSON. I am fairly confident that the 64-bit runtime will automatically convert a string to an int but the 32-bit runtime will not.

Why does the following code crash on an iPhone 5 but not an iPhone 5S?

The Int integer type is a 32-bit integer on the iPhone 5 and a 64-bit integer on the 5S. Since arc4random() returns a UInt32, which has twice the positive range of an Int on the iPhone 5, your first version basically has a 50% chance of crashing on this line:

var index = Int(arc4random())

Your modified version waits to convert until you take the modulo sum with max, so it's safe to convert to Int there. You should check out arc4random_uniform, which handles the modulo for you and avoids some bias inherent in your current implementation.

Identify new iPhone model on xcode (5, 5c, 5s)

Objective-C & SWIFT

This is working on all version like iOS 6, iOS 7 and iOS 8 etc...

And updated for iPhone 6 & iPhone 6 Plus

 -(void)viewDidLoad {

[super viewDidLoad];
// Do any additional setup after loading the view from its nib.

size_t size;
sysctlbyname("hw.machine", NULL, &size, NULL, 0);
char *machine = malloc(size);
sysctlbyname("hw.machine", machine, &size, NULL, 0);
NSString *platform = [NSString stringWithCString:machine encoding:NSUTF8StringEncoding];
NSLog(@"iPhone Device%@",[self platformType:platform]);

free(machine);
}

- (NSString *) platformType:(NSString *)platform
{
if ([platform isEqualToString:@"iPhone1,1"]) return @"iPhone 1G";
if ([platform isEqualToString:@"iPhone1,2"]) return @"iPhone 3G";
if ([platform isEqualToString:@"iPhone2,1"]) return @"iPhone 3GS";
if ([platform isEqualToString:@"iPhone3,1"]) return @"iPhone 4";
if ([platform isEqualToString:@"iPhone3,3"]) return @"Verizon iPhone 4";
if ([platform isEqualToString:@"iPhone4,1"]) return @"iPhone 4S";
if ([platform isEqualToString:@"iPhone5,1"]) return @"iPhone 5 (GSM)";
if ([platform isEqualToString:@"iPhone5,2"]) return @"iPhone 5 (GSM+CDMA)";
if ([platform isEqualToString:@"iPhone5,3"]) return @"iPhone 5c (GSM)";
if ([platform isEqualToString:@"iPhone5,4"]) return @"iPhone 5c (GSM+CDMA)";
if ([platform isEqualToString:@"iPhone6,1"]) return @"iPhone 5s (GSM)";
if ([platform isEqualToString:@"iPhone6,2"]) return @"iPhone 5s (GSM+CDMA)";
if ([platform isEqualToString:@"iPhone7,2"]) return @"iPhone 6";
if ([platform isEqualToString:@"iPhone7,1"]) return @"iPhone 6 Plus";
if ([platform isEqualToString:@"iPhone8,1"]) return @"iPhone 6s";
if ([platform isEqualToString:@"iPhone8,2"]) return @"iPhone 6s Plus";
if ([platform isEqualToString:@"iPhone8,4"]) return @"iPhone SE";
if ([platform isEqualToString:@"iPhone9,1"]) return @"iPhone 7";
if ([platform isEqualToString:@"iPhone9,2"]) return @"iPhone 7 Plus";
if ([platform isEqualToString:@"iPhone9,3"]) return @"iPhone 7";
if ([platform isEqualToString:@"iPhone9,4"]) return @"iPhone 7 Plus";
if ([platform isEqualToString:@"iPod1,1"]) return @"iPod Touch 1G";
if ([platform isEqualToString:@"iPod2,1"]) return @"iPod Touch 2G";
if ([platform isEqualToString:@"iPod3,1"]) return @"iPod Touch 3G";
if ([platform isEqualToString:@"iPod4,1"]) return @"iPod Touch 4G";
if ([platform isEqualToString:@"iPod5,1"]) return @"iPod Touch 5G";
if ([platform isEqualToString:@"iPad1,1"]) return @"iPad";
if ([platform isEqualToString:@"iPad2,1"]) return @"iPad 2 (WiFi)";
if ([platform isEqualToString:@"iPad2,2"]) return @"iPad 2 (GSM)";
if ([platform isEqualToString:@"iPad2,3"]) return @"iPad 2 (CDMA)";
if ([platform isEqualToString:@"iPad2,4"]) return @"iPad 2 (WiFi)";
if ([platform isEqualToString:@"iPad2,5"]) return @"iPad Mini (WiFi)";
if ([platform isEqualToString:@"iPad2,6"]) return @"iPad Mini (GSM)";
if ([platform isEqualToString:@"iPad2,7"]) return @"iPad Mini (GSM+CDMA)";
if ([platform isEqualToString:@"iPad3,1"]) return @"iPad 3 (WiFi)";
if ([platform isEqualToString:@"iPad3,2"]) return @"iPad 3 (GSM+CDMA)";
if ([platform isEqualToString:@"iPad3,3"]) return @"iPad 3 (GSM)";
if ([platform isEqualToString:@"iPad3,4"]) return @"iPad 4 (WiFi)";
if ([platform isEqualToString:@"iPad3,5"]) return @"iPad 4 (GSM)";
if ([platform isEqualToString:@"iPad3,6"]) return @"iPad 4 (GSM+CDMA)";
if ([platform isEqualToString:@"iPad4,1"]) return @"iPad Air (WiFi)";
if ([platform isEqualToString:@"iPad4,2"]) return @"iPad Air (Cellular)";
if ([platform isEqualToString:@"iPad4,3"]) return @"iPad Air";
if ([platform isEqualToString:@"iPad4,4"]) return @"iPad Mini 2G (WiFi)";
if ([platform isEqualToString:@"iPad4,5"]) return @"iPad Mini 2G (Cellular)";
if ([platform isEqualToString:@"iPad4,6"]) return @"iPad Mini 2G";
if ([platform isEqualToString:@"iPad4,7"]) return @"iPad Mini 3 (WiFi)";
if ([platform isEqualToString:@"iPad4,8"]) return @"iPad Mini 3 (Cellular)";
if ([platform isEqualToString:@"iPad4,9"]) return @"iPad Mini 3 (China)";
if ([platform isEqualToString:@"iPad5,3"]) return @"iPad Air 2 (WiFi)";
if ([platform isEqualToString:@"iPad5,4"]) return @"iPad Air 2 (Cellular)";
if ([platform isEqualToString:@"AppleTV2,1"]) return @"Apple TV 2G";
if ([platform isEqualToString:@"AppleTV3,1"]) return @"Apple TV 3";
if ([platform isEqualToString:@"AppleTV3,2"]) return @"Apple TV 3 (2013)";
if ([platform isEqualToString:@"i386"]) return @"Simulator";
if ([platform isEqualToString:@"x86_64"]) return @"Simulator";
return platform;
}

this code is also AppStore safe.

SWIFT 3.2

    override func viewDidLoad() {
super.viewDidLoad()

var sysInfo = utsname()
uname(&sysInfo)
let machine = Mirror(reflecting: sysInfo.machine)
let identifier = machine.children.reduce("") { identifier, element in
guard let value = element.value as? Int8, value != 0 else { return identifier }
return identifier + String(UnicodeScalar(UInt8(value)))
}

NSLog("Device Type ----> %@", self.platformType(platform: identifier as NSString));

print(self.platformType(platform: identifier as NSString))
}

func platformType(platform : NSString) -> NSString{
if platform.isEqual(to: "iPhone1,1") {
return "iPhone 1G"
}
else if platform.isEqual(to: "iPhone1,2"){
return "iPhone 3G"
}
else if platform.isEqual(to: "iPhone2,1"){
return "iPhone 3GS"
}
else if platform.isEqual(to: "iPhone3,1"){
return "iPhone 4"
}
else if platform.isEqual(to: "iPhone3,3"){
return "Verizon iPhone 4"
}
else if platform.isEqual(to: "iPhone4,1"){
return "iPhone 4S"
}
else if platform.isEqual(to: "iPhone5,1"){
return "iPhone 5 (GSM)"
}
else if platform.isEqual(to: "iPhone5,2"){
return "iPhone 5 (GSM+CDMA)"
}
else if platform.isEqual(to: "iPhone5,3"){
return "iPhone 5c (GSM)"
}
else if platform.isEqual(to: "iPhone5,4"){
return "iPhone 5c (GSM+CDMA)"
}
else if platform.isEqual(to: "iPhone6,1"){
return "iPhone 5s (GSM)"
}
else if platform.isEqual(to: "iPhone6,2"){
return "iPhone 5s (GSM+CDMA)"
}
else if platform.isEqual(to: "iPhone7,2"){
return "iPhone 6"
}
else if platform.isEqual(to: "iPhone7,1"){
return "iPhone 6 Plus"
}
else if platform.isEqual(to: "iPhone8,1"){
return "iPhone 6s"
}
else if platform.isEqual(to: "iPhone8,2"){
return "iPhone 6s Plus"
}
else if platform.isEqual(to: "iPhone8,4"){
return "iPhone SE"
}
else if platform.isEqual(to: "iPhone9,1"){
return "iPhone 7"
}
else if platform.isEqual(to: "iPhone9,2"){
return "iPhone 7 Plus"
}
else if platform.isEqual(to: "iPhone9,3"){
return "iPhone 7"
}
else if platform.isEqual(to: "iPhone9,4"){
return "iPhone 7 Plus"
}
else if platform.isEqual(to: "iPod1,1"){
return "iPod Touch 1G"
}
else if platform.isEqual(to: "iPod2,1"){
return "iPod Touch 2G"
}
else if platform.isEqual(to: "iPod3,1"){
return "iPod Touch 3G"
}
else if platform.isEqual(to: "iPod4,1"){
return "iPod Touch 4G"
}
else if platform.isEqual(to: "iPod5,1"){
return "iPod Touch 5G"
}
else if platform.isEqual(to: "iPad1,1"){
return "iPad"
}
else if platform.isEqual(to: "iPad2,1"){
return "iPad 2 (WiFi)"
}
else if platform.isEqual(to: "iPad2,2"){
return "iPad 2 (GSM)"
}
else if platform.isEqual(to: "iPad2,3"){
return "iPad 2 (CDMA)"
}
else if platform.isEqual(to: "iPad2,4"){
return "iPad 2 (WiFi)"
}
else if platform.isEqual(to: "iPad2,5"){
return "iPad Mini (WiFi)"
}
else if platform.isEqual(to: "iPad2,6"){
return "iPad Mini (GSM)"
}
else if platform.isEqual(to: "iPad2,7"){
return "iPad Mini (GSM+CDMA)"
}
else if platform.isEqual(to: "iPad3,1"){
return "iPad 3 (WiFi)"
}
else if platform.isEqual(to: "iPad3,2"){
return "iPad 3 (GSM+CDMA)"
}
else if platform.isEqual(to: "iPad3,3"){
return "iPad 3 (GSM)"
}
else if platform.isEqual(to: "iPad3,4"){
return "iPad 4 (WiFi)"
}
else if platform.isEqual(to: "iPad3,5"){
return "iPad 4 (GSM)"
}
else if platform.isEqual(to: "iPad3,6"){
return "iPad 4 (GSM+CDMA)"
}
else if platform.isEqual(to: "iPad4,1"){
return "iPad Air (WiFi)"
}
else if platform.isEqual(to: "iPad4,2"){
return "iPad Air (Cellular)"
}
else if platform.isEqual(to: "iPad4,3"){
return "iPad Air"
}
else if platform.isEqual(to: "iPad4,4"){
return "iPad Mini 2G (WiFi)"
}
else if platform.isEqual(to: "iPad4,5"){
return "iPad Mini 2G (Cellular)"
}
else if platform.isEqual(to: "iPad4,6"){
return "iPad Mini 2G";
}
else if platform.isEqual(to: "iPad4,7"){
return "iPad Mini 3 (WiFi)"
}
else if platform.isEqual(to: "iPad4,8"){
return "iPad Mini 3 (Cellular)"
}
else if platform.isEqual(to: "iPad4,9"){
return "iPad Mini 3 (China)"
}
else if platform.isEqual(to: "iPad5,3"){
return "iPad Air 2 (WiFi)"
}
else if platform.isEqual(to: "iPad5,4"){
return "iPad Air 2 (Cellular)"
}
else if platform.isEqual(to: "AppleTV2,1"){
return "Apple TV 2G"
}
else if platform.isEqual(to: "AppleTV3,1"){
return "Apple TV 3"
}
else if platform.isEqual(to: "AppleTV3,2"){
return "Apple TV 3 (2013)"
}
else if platform.isEqual(to: "i386"){
return "Simulator"
}
else if platform.isEqual(to: "x86_64"){
return "Simulator"
}
return platform
}

What's the device code (platform string) for iPhone 5 / 5c / 5s / iPod touch 5?

You can find a list of all iOS device identifiers here (including iPhone 5 models and iPad mini):
http://theiphonewiki.com/wiki/index.php?title=Models

The identifiers of the latest models are:

iPhone 5: iPhone5,1 and iPhone5,2

iPhone 5C: iPhone5,3 and iPhone5,4

iPhone 5S: iPhone6,1 and iPhone6,2

iPhone 6: iPhone7,2

iPhone 6 Plus: iPhone7,1

iPhone 6S: iPhone8,1

iPhone 6S Plus: iPhone8,2

iPhone SE: iPhone8,4

iPhone 7: iPhone9,1 and iPhone9,3

iPhone 7 Plus: iPhone9,2 and iPhone9,4

iPhone 8: iPhone10,1 and iPhone10,4

iPhone 8 Plus: iPhone10,2 and iPhone10,5

iPhone X: iPhone10,3 and iPhone10,6

EDIT: I also made an updated version of the popular iOS Support Matrix including all models up to iPhone X.

iOS 8 screen bounds different on device and simulator in landscape orientation

I have managed to resolve this myself as below. This works for all current iPhone/iPad devices running iOS 8 where the app is set to run in landscape mode only. Not sure why the code I originally posted doesn't work.

CGRect screenBound = [[UIScreen mainScreen] bounds];
CGSize screenSize = screenBound.size;

if (screenSize.width > screenSize.height)
{
ScreenHeight = screenSize.width;
ScreenWidth = screenSize.height;
}
else
{
ScreenHeight = screenSize.height;
ScreenWidth = screenSize.width;
}

App not installing on iPhone 5s

No there is not need to use the iOS 7 SDK, all iOS 7 devices are capable of running iOS 6 apps.

Just make sure that you have the correct UDID, if the UDID start with FFFFF the UDID is not corrcet. Since iOS 7 the developers can not access the UDID any more. Thus all the UDID app are not longer working.

You should use iTunes to retrieve the UDID of the device.



Related Topics



Leave a reply



Submit