gpt4 book ai didi

iOS 设备检查 xcode 5

转载 作者:行者123 更新时间:2023-11-28 20:11:20 25 4
gpt4 key购买 nike

希望大家今天过得愉快。我已经根据我在堆栈溢出中遇到的东西实现了一个设备检查文件,我一直无法找到原始帖子来通过它。如果我碰巧遇到,我会引用它。

这曾经在以前的 xcode 4.x 上运行良好,但对于 xcode 5 我收到此错误。

读取字典元素的预期方法在“NSDictionary *”类型的对象上找不到 NSString *deviceName = commonNamesDictionary[machineName];

我设法找到了这个,但它适用于 iOS 5 到 iOS6 How to enable the new Objective-C object literals on iOS?

实现的代码如下。显然,直到 iphone 5 才确定如何添加新的手机拱门。

.h 实现

#import <Foundation/Foundation.h>
#import <sys/utsname.h> //to check if its a iphone 4s or iphone 5
@interface deviceCheck : NSObject

+(NSString*)deviceModelName;

@end

.m 实现

#import "deviceCheck.h"
@implementation deviceCheck

* device checking method to tell the difference between devices */
+(NSString*)deviceModelName
{
struct utsname systemInfo;
uname(&systemInfo);
NSString *machineName = [NSString stringWithCString:systemInfo.machine encoding:NSUTF8StringEncoding];
NSDictionary *commonNamesDictionary =
@{
@"i386": @"iPhone Simulator",
@"x86_64": @"iPad Simulator",

@"iPhone1,1": @"iPhone",
@"iPhone1,2": @"iPhone 3G",
@"iPhone2,1": @"iPhone 3GS",
@"iPhone3,1": @"iPhone 4",
@"iPhone4,1": @"iPhone 4S",
@"iPhone5,1": @"iPhone 5(GSM)",
@"iPhone5,2": @"iPhone 5(GSM+CDMA)",

@"iPad1,1": @"iPad",
@"iPad2,1": @"iPad 2(WiFi)",
@"iPad2,2": @"iPad 2(GSM)",
@"iPad2,3": @"iPad 2(CDMA)",
@"iPad2,4": @"iPad 2(WiFi Rev A)",
@"iPad2,5": @"iPad Mini(WiFi)",
@"iPad2,6": @"iPad Mini(GSM)",
@"iPad2,7": @"iPad Mini(GSM+CDMA)",
@"iPad3,1": @"iPad 3(WiFi)",
@"iPad3,2": @"iPad 3(GSM+CDMA)",
@"iPad3,3": @"iPad 3(GSM)",
@"iPad3,4": @"iPad 4(WiFi)",
@"iPad3,5": @"iPad 4(GSM)",
@"iPad3,6": @"iPad 4(GSM+CDMA)",

@"iPod1,1": @"iPod 1st Gen",
@"iPod2,1": @"iPod 2nd Gen",
@"iPod3,1": @"iPod 3rd Gen",
@"iPod4,1": @"iPod 4th Gen",
@"iPod5,1": @"iPod 5th Gen",

};
NSString *deviceName = commonNamesDictionary[machineName]; // <-- here is the issue
if (deviceName == nil) {
deviceName = machineName;
}
return deviceName;

}
@end

还有其他人遇到过这个问题吗?

预先感谢您对此的帮助。

最佳答案

这个问题非常简单……但是,我花了一些时间才弄明白。希望这对以后遇到此问题的其他人有所帮助。出于某种原因,当我导入 Sys/utsname.h 时,它指的是 IOS5 的副本而不是 IOS7 的副本,我只需要删除导入关闭 xcode 并重新声明导入(不确定是否是这样)诀窍,但这些是我必须遵循的步骤才能最终奏效)。你怎么能检查它的点是否在右边,只需“命令 + 单击”,它就会带你到引用的地方。

我借此机会更新了所有已推出的新设备。

@{
@"i386": @"iPhone Simulator",
@"x86_64": @"iPad Simulator",

//IPHONE
@"iPhone1,1": @"iPhone",
@"iPhone1,2": @"iPhone 3G",
@"iPhone2,1": @"iPhone 3GS",
@"iPhone3,1": @"iPhone 4",
@"iPhone4,1": @"iPhone 4S",
@"iPhone5,1": @"iPhone 5(GSM)",
@"iPhone5,2": @"iPhone 5(GSM+CDMA)",
@"iPhone5,3": @"iPhone 5c(GSM)",
@"iPhone5,4": @"iPhone 5c(Global)",
@"iPhone6,1": @"iPhone 5s(GSM)",
@"iPhone6,2": @"iPhone 5s(Global)",

//IPAD
@"iPad1,1": @"iPad",
@"iPad2,1": @"iPad 2(WiFi)",
@"iPad2,2": @"iPad 2(GSM)",
@"iPad2,3": @"iPad 2(CDMA)",
@"iPad2,4": @"iPad 2(WiFi Rev A)",
@"iPad2,5": @"iPad Mini(WiFi)",
@"iPad2,6": @"iPad Mini(GSM)",
@"iPad2,7": @"iPad Mini(GSM+CDMA)",
@"iPad3,1": @"iPad 3(WiFi)",
@"iPad3,2": @"iPad 3(GSM+CDMA)",
@"iPad3,3": @"iPad 3(GSM)",
@"iPad3,4": @"iPad 4(WiFi)",
@"iPad3,5": @"iPad 4(GSM)",
@"iPad3,6": @"iPad 4(GSM+CDMA)",
@"iPad4,1": @"iPad Air(WiFi)",
@"iPad4,2": @"iPad Air(Cellular)",
@"iPad4,4": @"iPad Mini 2G(WiFi)",
@"iPad4,5": @"iPad Mini 2G(Cellular)",

//IPOD
@"iPod1,1": @"iPod 1st Gen",
@"iPod2,1": @"iPod 2nd Gen",
@"iPod3,1": @"iPod 3rd Gen",
@"iPod4,1": @"iPod 4th Gen",
@"iPod5,1": @"iPod 5th Gen",

};

关于iOS 设备检查 xcode 5,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20080282/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com