9

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];
4

3 回答 3

28

您应该执行以下操作。

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 或任何其他编码。

于 2011-02-05T08:59:21.870 回答
2

来自文档-[NSURL initWithString:]

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

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

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

于 2011-02-05T08:20:20.620 回答
0
NSLog(@"urlString = %@",webStr); // its printing correct url string 

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

于 2011-02-05T08:21:59.450 回答