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

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

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

我做错了什么?

【问题讨论】:

    标签: objective-c cocoa-touch iphone-sdk-3.0


    【解决方案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]];
      

      【讨论】:

      • 谢谢,还是不行,和其他答案一样的错误。
      • 您正在尝试通过拨打电话的方法设置标签。
      • 嗯,是的,也是。稍微改变了我的答案。
      猜你喜欢
      • 2011-07-15
      • 2016-07-14
      • 1970-01-01
      • 1970-01-01
      • 2015-08-23
      • 2013-07-17
      • 1970-01-01
      • 2012-04-08
      • 2018-07-25
      相关资源
      最近更新 更多