2013-02-18 76 views
3

我正在研究可通過URL啓動的應用程序。我已經在信息頁面上使用xcode定義了我的url方案。我填充標識符我的捆綁標識符和URL計劃myapp。使用url方案傳遞參數

現在,如果我嘗試在Safari中的myapp打開:// FOO,它啓動我的應用程序,並在

- (BOOL)application:(UIApplication *)application 
     openURL:(NSURL *)url 
sourceApplication:(NSString *)sourceApplication 
    annotation:(id)annotation 

方法在我的斷點處停止。

問題是註釋,url,應用程序,sourceapplication參數爲零。所以我不能傳遞參數...

enter image description here

+0

你在哪個版本的iOS上定位/測試? – bdesham 2013-02-18 15:02:46

+0

SDK 6.1,iOS 6.1 – Mert 2013-02-18 15:03:46

+0

你是說這個方法的'url'變量爲零,或者'url'的parameterString(因爲它是一個NSURL)是否爲零?你怎麼確定它是零? – 2013-02-18 22:22:39

回答

0

不必要的時間損失後,我發現,這個問題是調試器。它顯示的網址是零,如果我嘗試打印說明它說

Printing description of url: 
<nil> 

,但如果我嘗試的NSLog它顯示的網址。 如果把下面的代碼的方法

if (! url) { 
    return NO; 
} 

調試器也顯示了URL。

+0

在這種情況下,請確保您的項目處於「調試」模式而不是「釋放」模式。在默認的發佈模式下,很多東西可以被優化出來 – portforwardpodcast 2013-02-19 10:51:15

+0

它已經處於調試模式。 – Mert 2013-02-19 10:53:07

0

您確定您的項目處於調試模式嗎?請看這裏http://nerdwa.com/index.php/2011/09/debugrelease-schemes-in-xcode-4/

+0

是的,我很確定。我也有很多預處理器指令,像我的代碼中的#ifdef DEBUG – Mert 2013-02-19 11:07:15

+0

有時調試器會在設備上執行此操作。只要你的nslog看到你應該沒問題的價值。如果你打破和類型「po url」你回來了什麼? – portforwardpodcast 2013-02-19 11:11:03

+0

也可以問你將如何傳遞數據?我可能會建議使用base64編碼的json對象。這允許結構化的數據,這是非常簡單的做 – portforwardpodcast 2013-02-19 11:12:15