2012-10-02 165 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