NSString转换为NSURL?

18
尝试将字符串转换为NSURL,但这并没有发生。
barcodeTextLabel.text = foundCode.barcodeString;
urlToGrab = [NSString stringWithFormat:@"%@", foundCode.barcodeString]; // foundCode.barcodeString is an NSString

urlToGrab显示以下错误:"无效的CFStringRef"


你能否提供更多细节的代码,例如urlToGrab属于哪种数据类型? - EXC_BAD_ACCESS
3
你如何期望从 +stringWithFormat: 方法中获取一个 NSURL? - Caleb
4个回答

55
这是如何从一个NSString创建一个NSURL的方法:
NSURL *url = [NSURL URLWithString:@"https://www.google.com"];

1
NSURL是一个对象,所以你缺少了* NSURL *url。 - jomafer

3
您可以使用以下方法创建文件路径转换为URL。
NSURL *yourURL = [NSURL fileURLWithPath:@"/Users/xyz/Desktop/abc.sqlite"];

0
如果要将 foundCode.barcodeString 作为您的 URL 字符串,那么(与上面的答案类似)请使用 NSURL 类方法 URLWithString:(NSString *)
代码应该如下所示:
NSURL urlToGrab = [NSURL URLWithString:foundCode.barcodeString];

你的错误出现在哪里?根据你的代码,urlToGrab是一个NSString实例。如果你试图在NSString上发起HTTP请求而不是NSURL,我想你会得到描述中所述的错误。

-2

Swapnali Patil的回答是正确的,但我想加上一些解释。

如果NSString的格式不符合NSURL(file:///xxx/file.ext)的文件标准,则会得到一个nil

我的需求是通过URL文件路径加载JPG图像到NSData中;NSURL * u=[[NSURL alloc] initWithString:fpath]返回了nil,但是如上述答案所提到的,NSURL *yourURL = [NSURL fileURLWithPath:fpath]可以工作。文件的URL将采用file:///users/xxx/pic.jpg格式并提供磁盘访问。如果缺少http://NSURL * u=[[NSURL alloc] initWithString:(NSString*) ]也会返回nil对象,但如果NSString是Web URL,则会返回nil对象。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接