将变量附加到 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的主要内容,如果未能解决你的问题,请参考以下文章