objective-c – 将文件路径从NSString转换为NSURL

objective-c – 将文件路径从NSString转换为NSURL,第1张

概述我正在通过Cocoa顺利,但这个问题似乎这么基础,它取消了所有我学到的酷的东西。 :/ 我有一个生成的文件路径,它需要是NSURL格式。从研究,这是我写的代码: NSLog(@"Old path = %@", pathToFile);NSURL *xmlURL = [[[NSURL alloc] init] fileURLWithPath:pathToFile];NSLog(@"New pat 我正在通过Cocoa顺利,但这个问题似乎这么基础,它取消了所有我学到的酷的东西。 :/

我有一个生成的文件路径,它需要是NSURL格式。从研究,这是我写的代码:

NSLog(@"old path = %@",pathTofile);NSURL *xmlURL = [[[NSURL alloc] init] fileURLWithPath:pathTofile];NSLog(@"New path = %@",[xmlURL absoluteString]);

而输出:

2010-01-27 15:39:22.105 MusiclibraryStats[28574:a0f] old path = file://localhost/Users/[username]/Music/iTunes/iTunes%20Music%20library.xml2010-01-27 15:39:22.105 MusiclibraryStats[28574:a0f] New path = (null)

首先,alloc-init甚至不必要;在这种情况下,如果我不alloc-init,我得到一个“无法识别的选择器”错误在那行。当然,现在我只是变老了(null)。

我在哪里?

谢谢!

解决方法 [[NSURL alloc] init]不是不必要的,它是无效的。 fileURLWithPath:是一个类方法,这意味着你只能在类对象(即NSURL本身)上调用它。它不会产生编译错误,因为 – (NSURL *)init返回类型ID的对象,并不会导致运行时错误,因为 – (NSURL *)init实际返回nil,发送到nil的消息只会级联另一个nil作为它们的返回值。

此代码应该工作:

Nsstring* pathTofile = @"/this/is/a/path";NSURL* url = [NSURL fileURLWithPath:pathTofile];

我发现你的问题。
– [NSOpenPanel URLs]返回一个NSURL对象数组,它被视为Nsstring对象。那是不对的。您应该使用以下内容:

NSURL* url = [[oPanel URLs] objectAtIndex:0];

调试器可能会告诉你,如果你查看pathTofile变量。请务必在下次检查。用鼠标悬停变量应该得到它的类型。

但是,请记住,在某些情况下,您将合法地遇到另一种类型,而不是您期望的类型。例如,私有NSPathStore2类是Nsstring集群的一部分,您可以对NSPathStore2对象执行Nsstring支持的所有内容。 (如果发生这种情况,并且您不太确定,请检查文档以查看您期望的类型是否为集群类型,这是它们在文档中的调用方式。)

总结

以上是内存溢出为你收集整理的objective-c – 将文件路径从NSString转换为NSURL全部内容,希望文章能够帮你解决objective-c – 将文件路径从NSString转换为NSURL所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1041132.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-24
下一篇 2022-05-24

发表评论

登录后才能评论

评论列表(0条)

保存