将变量附加到 NSURL

Posted

技术标签:

【中文标题】将变量附加到 NSURL【英文标题】:Append Variable to NSURL 【发布时间】:2011-12-28 19:15:58 【问题描述】:

我正在尝试从来自 JSON 的电话号码中创建一个电话链接,它在此行抛出一个未捕获的异常:

 lblPhone.text = [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"tel://" URLByAppendingPathComponent:phone]];

我做错了什么?

【问题讨论】:

【参考方案1】:

您正在尝试从不返回字符串的操作中创建标签的字符串。无法从尝试拨打电话的操作结果中设置字符串的文本。

要创建标签,只需使用电话号码。

lblPhone.text = phone

要进行调用,您需要关联一个使用标签的操作:

NSString *phoneNrUrl = [@"tel://" stringByAppendingString:lblPhone.text];
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:phoneNrUrl]];

您可以将上述两行作为一行来执行,但我更喜欢可读性并让编译器进行优化。

【讨论】:

【参考方案2】:

openURL: 可能返回一个BOOL,而lblPhone.text 似乎更像一个NSString

如果这不是原因,那么在您的问题中添加异常消息怎么样?

【讨论】:

*** 由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:“*** +[NSURL URLWithString:stringByAppendingString:]:无法识别的选择器发送到类 0x41de40” 当您使用不存在的函数时会导致该错误。看看我的回答——你把两个功能放在一起。 汤姆是对的。我没有滚动你的代码。解决这个问题,你会遇到第二个异常。然后阅读我的答案。【参考方案3】:

您正在调用不存在的函数+[NSURL URLWithString:URLByAppendingPathComponent:]。您想先从字符串创建 URL,然后添加路径组件。

更像这样:

[[UIApplication sharedApplication] openURL:[[NSURL URLWithString:@"tel://"] URLByAppendingPathComponent:phone]];

【讨论】:

谢谢,还是不行,和其他答案一样的错误。 您正在尝试通过拨打电话的方法设置标签。 嗯,是的,也是。稍微改变了我的答案。

以上是关于将变量附加到 NSURL的主要内容,如果未能解决你的问题,请参考以下文章

将对象附加到变量

Python将变量附加到列表[关闭]

SETX 不会将路径附加到系统路径变量

如何将多个 filter() 查询附加到一个变量中

如何将变量附加到 Graphql 上下文?

Alamofire 访问将数据附加到全局变量