2013-02-18 44 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