如何准确检测i设备的型号?

4
我想检测用户使用的iDevice,然后将设备名称放在一个UILabel中。使用以下代码,应用程序仅检测iPhone/iPad/iPod,我想要iPhone 4/iPod 3G/iPad 1G...或确切的名称(iPhone 3.1/iPod 2.0/ iPad 2.4)...
这是我的代码:
iDevice.text = [UIDevice currentDevice]. localizedModel;

我尝试过这样做

iDevice.text = [UIDevice currentDevice]. model;

但实际上它说的是iPhone,我喜欢iPhone 3.1。


可能是 https://dev59.com/13NA5IYBdhLWcg3wC5Xh 的重复问题。 - propstm
我尝试了所有这些方法,但是都没有对我起作用:( - David Gölzhäuser
你有没有查看我链接中所接受的答案?我过去曾经使用过它并取得了一些成功。"最完整的UIDevice(硬件)类别可能是http://github.com/erica/uidevice-extension/" - propstm
我确实需要这个,但我不知道如何在标签中使用它。 - David Gölzhäuser
1个回答

2

好的,看起来您需要使用Erica Sadun创建的类别,位于https://github.com/erica/uidevice-extension/

在介绍如何使用之前,我想提供一些关于类别的信息。苹果公司在此提供了有关类别的文档http://developer.apple.com/library/ios/#documentation/cocoa/conceptual/objectivec/chapters/occategories.html

您可以通过在接口文件中声明一个类别名称并在实现文件中以相同名称定义它们来向类添加方法。类别名称表示这些方法是对其他地方声明的类的补充,而不是新类。但是,您无法使用类别向类添加额外的实例变量。

从GitHub下载项目,并将这两个文件添加到您的项目中:

UIDevice-Hardware.h
UIDevice-Hardware.m

您将使用的方法可能是以下之一:
- (NSString *) platform;
- (NSString *) hwmodel;
- (NSUInteger) platformType;
- (NSString *) platformString;

因此,您需要将UIDevice-Hardware.h导入到想要使用该方法的文件中。您可以使用该方法返回一个NSString值并将其分配给标签,因此您需要执行类似于以下操作:

mylabel.text = [[UIDevice currentDevice] platformString]

这是一个介绍类别概念的好文章链接:http://mobile.tutsplus.com/tutorials/iphone/objective-c-categories/ 编辑:在设备模拟器中使用示例截图如下: enter image description here 注意:在我的@interface行上面也有#import "UIDevice-Hardware.h"

现在我将UIDevice-Hardware.h和UIDevice-Hardware.m添加到我的项目中,我在我的.m文件中使用#import "UIDevice-Hardware.h"导入该文件,然后我在- (void)viewDidLoad中添加了mylabel.text = [[UIDevice currentDevice] platformString],但我的应用程序崩溃了:( 我的错误在哪里?我是否需要对以下方法进行任何操作?
  • (NSString *) platform;
  • (NSString *) hwmodel;
  • (NSUInteger) platformType;
  • (NSString *) platformString;
- David Gölzhäuser
我有个 iDevice.text = [[UIDevice currentDevice] platformString];。 - David Gölzhäuser
你能否创建一个 postbin 或 gist 来展示你正在使用的代码?我想尽快尝试重现它。 - propstm
我已经在我的原始回复中使用类别添加了一个屏幕截图。如果您可以记录您的设备而不是完成iDevice的任务,请告诉我。 - propstm
请您能否制作一个 UIDevice-Hardware.h 文件的要点摘要。 - propstm
显示剩余7条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接