【问题标题】:NSURL object is nil even after initialization with a string即使在使用字符串初始化之后,NSURL 对象也是 nil
【发布时间】:2013-02-28 05:05:59
【问题描述】:

我有一个字符串如下(实际上是一个链接http://xxx.xx.xxx.xxx:xxxx/goat/mainMenuNew.png (x 替换为 ip 地址)

我想将其转换为 URL。以下是我所做的,

NSURL *imageUrl = [NSURL URLWithString:objUserInfo.photoLink];

也试过allocinitWithString

但是,imageUrl 在这两种情况下都为零。

请让我知道我哪里出错了。

【问题讨论】:

  • 你确定 objUserInfo.photoLink 不是 nil 吗?
  • 是的,它不是零。我确实在将它作为参数传递之前打印了它。
  • @BenTrengrove 所说的。此外,值得添加 NSLog() 或其他内容以确保它不是格式错误的 URL;如果是,您的 NSURL 对象将为 nil。
  • @bgoers 局部变量默认为strong ARC。
  • @Raj 你能 NSLog objUserInfo.photoLink 在这里打印日志吗?另外,NSLog imageUrl 并在此处打印日志。

标签: iphone ios objective-c cocoa-touch


【解决方案1】:

您可以尝试以下方法:

  • 检查objUserInfo.photoLink是否仍然包含字符串,在转换为URL之前记录它
  • 如果它确实尝试使用以下方法修剪您的字符串:

    [objUserInfo.photoLink stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
    
  • 如果问题仍然存在,请检查 san 的答案以添加百分比转义

【讨论】:

    【解决方案2】:

    添加这个,你的链接是否包含空格。

    NSString *urlStr =[objUserInfo.photoLink stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
    NSURL *imageUrl = [NSURL URLWithString:urlStr];
    

    将此链接粘贴到 Safari:http://www.google.com/search?q=I%20Love%20You 输入,您将了解代码的作用。

    【讨论】:

    • 谢谢你,它的工作,但 url 前面有以下字符 %0A%20%20%20%20%20%20%20%20。有它正常吗?
    • @Raj 您一定已经从某些文本中解析了 URL 字符串,并且最终得到了前导回车符和空格。使用“rptwsthi”的答案来修剪前导空格和换行符。
    • 是的,%0A 或 %20 在处理 URL 时会替换一些特殊字符。不用担心。我不记得了,也许 %20 = 空格。始终使用 Internet URL 进行操作
    • @Raj sang 说得对 %20 需要填充您的 URL 空白,因此您必须使用 %20 +1 对 URL 字符串进行编码以获得良好的 Answer Sang
    猜你喜欢
    • 1970-01-01
    • 2017-04-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-04
    • 2013-06-27
    相关资源
    最近更新 更多