【问题标题】:Created NSURL is null创建的 NSURL 为空
【发布时间】:2011-06-21 19:23:27
【问题描述】:

NSURL 打印null。是什么原因?

NSString *webStr = [[NSString alloc] initWithFormat:@"%@",[webArray objectAtIndex:1]];

NSLog(@"urlString = %@",webStr); // its printing correct url string

NSURL *webURL = [[NSURL alloc] initWithString:webStr];

NSLog(@"url = %@",webURL); // its printing null

[webURL release];

[webStr release];

【问题讨论】:

标签: iphone nsurl


【解决方案1】:

您应该执行以下操作。

NSString *webStr = [[NSString alloc] initWithFormat:@"%@",[webArray objectAtIndex:1]];

NSLog(@"urlString = %@",webStr); // its printing correct url string

NSURL *webURL = [[NSURL alloc] initWithString:[webStr stringByAddingPercentEscapesUsingEncoding:NSASCIIStringEncoding]];

NSLog(@"url = %@",webURL); // it should print it

[webURL release];

[webStr release];

我使用过 NSASCIIStringEncoding,但您也可以使用 UTF8 或任何其他编码。

【讨论】:

  • 是的,现在只有我知道该值包含数组中的空间..非常感谢。
  • 是的,空格是 url 中的第一个问题。 :) 不客气。
【解决方案2】:

来自-[NSURL initWithString:] 的文档:

如果字符串格式错误,则返回 nil。

此方法要求 URLString 包含任何必要的百分比转义码,即“:”、“/”、“%”、“#”、“;”和“@”。请注意,“%”转义是通过 UTF-8 翻译的。

这引发了:您的意见是什么?

【讨论】:

  • 第二个。 Nishanth.jeeva 发布的代码不包含明显的错误,应该可以按预期工作。
  • [webArray objectAtIndex:1] contains "chennaispider.com/resources/… still url printing null.
  • 您的 URL 必须满足 RFC 1738 中指定的要求:ietf.org/rfc/rfc1738.txt — 例如http://<host>:<port>/<path>?<searchpart>
  • @Nishanth.jeeva 是的,请参阅 Alex Reynold 的评论。而不是您使用的输入,您提供的网址应该是@"http://www.chennaispider.com/resources/2838-Details-Chennai-City-Fire-Stations.aspx"
【解决方案3】:
NSLog(@"urlString = %@",webStr); // its printing correct url string 

它没有打印正确的 URL 字符串。它只是打印字符串。 因此,如果 NSURL *webURL = [[NSURL alloc] initWithString:webStr] 返回 nil,则意味着您的字符串不是有效的 URL。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-04-05
    • 1970-01-01
    • 2014-03-14
    • 1970-01-01
    • 1970-01-01
    • 2016-07-31
    • 1970-01-01
    • 2018-11-25
    相关资源
    最近更新 更多