2012-10-02 149 views
0

我正在处理一个包含许多视图控制器的大项目。通过这些观点取得进展取决于数据是以冗长的形式填写的。更改iOS模拟器设备名称

以我不那么聪明的方式来自动填充数据,这样我就可以加速到我正在处理的当前功能。我用一个条件是这样的...

if(
    [[[UIDevice currentDevice] name] hasPrefix:@"Rob"] || 
    [[[UIDevice currentDevice] name] hasPrefix:@"iPad Simulator"] 
    ) 
{ 
    self.label.text = @"xxx"; 
    ... 
} 

...这真是棒极了,因为我都在我的iPad和在模拟器中进行测试。现在客户端也希望能够在他们的模拟器上进行测试,所以我不能让自动填充功能进入。我认为最简单的解决方案就是更改模拟器的名称。

在模拟器的Settings.app中,它不可编辑。我也没有看到文本“iPad Simulator”或“Simulator”出现在〜/ Library/Application Support/iPhone Simulator/5.1中的任何文件中。我已经完成了设置plist属性的搜索,但没有运气。

有谁知道如何做到这一点?

+0

为了测试目的,很奇怪的方法,你应该使用'if(DEBUG){...}' – akashivskyy

+0

@Kashiv,我在一个团队工作,而不是每个人都需要或希望这些自动填充值。我检查过,并且似乎也没有为每个用户设置这些编译器常量的方法。因此,将逻辑放在DEBUG块中仍然会使我的所有测试位都显示给每个人(尽管这是我最初选择的方法)。最后,我将#warnings放在我所有的测试块中,作为最后一个通行证,当我们准备好进行最终测试时,我会删除它们。 – rob5408

回答

0

您将能够通过检查模型而不是当前设备的名称来检查它是否运行iPhone Simulator。像下面这样的东西应该做的事:

if ([[[UIDevice currentDevice] model] isEqualToString:@"iPhone Simulator"]) { 
    // Run for iPhone simulator 
} 

注意:你需要,当你使用iPad模拟器

而且使用的“iPad模拟器”对,你目前有hasPrefix代码是不固定所有。 Rob是一个普通的名称,所以如果其他人拥有一个设备名称为Rob的设备名称,那么它会公开你的测试信息。我强烈建议你只针对模拟器的这个自动完成功能。

+0

嗨苏哈尔,谢谢你的回答。我已经可以告诉它在模拟器中运行,但是我想更改我的模拟器的名称,然后根据该新名称编写条件。此外,虽然hasPrefix方法并不理想,但这是针对企业分发应用程序的,我们将控制设备名称,所以这不是问题。谢谢! – rob5408

0

只需创建一个新类并将加载逻辑放在那里。

然后,从您的委托didFinishLaunchingWithOptions方法中调用此类。

有了这个,您可以随时评论上述呼叫或更好的方式,检查数据是否已经加载并忽略它。

+0

我喜欢这种保持一切整洁的方法,并且仍然可以使用它,但我认为它不会帮助实现目标。谢谢! – rob5408