NSURL 字符串给出空值

Posted

技术标签:

【中文标题】NSURL 字符串给出空值【英文标题】:NSURL with string giving null value 【发布时间】:2013-05-16 01:51:21 【问题描述】:

以下是我所拥有的

NSString *foofile = @"/Users/alkandari/Library/Application Support/iPhone Simulator/6.1/Applications/8C445026-6387-4E40-B5A3-D1A1680666D6/Documents/ProjacsBODFiles/file_5_21.pdf"
NSURL *url;
if (fileExists) 
    url = [NSURL URLWithString:foofile];
    NSLog(@"taking local file 1 ... %@==%@", url, foofile);
 else 

    url=[NSURL URLWithString:address];
    NSLog(@"taking internet file 1... %@", url);

当我执行时,我得到如下日志

taking local file 1 ... (null)==/Users/alkandari/Library/Application Support/iPhone Simulator/6.1/Applications/8C445026-6387-4E40-B5A3-D1A1680666D6/Documents/ProjacsBODFiles/file_5_21.pdf

我不明白为什么我的 URL 为空。因此我无法打开文件。

知道为什么上面的 URL 为 null 吗?

【问题讨论】:

【参考方案1】:

您需要使用fileURLWithPath 作为本地文件系统的路径:

NSString *foofile = @"/Users/alkandari/Library/Application Support/iPhone Simulator/6.1/Applications/8C445026-6387-4E40-B5A3-D1A1680666D6/Documents/ProjacsBODFiles/file_5_21.pdf"
NSURL *url;
if (fileExists) 
    url = [NSURL fileURLWithPath:foofile];
    NSLog(@"taking local file 1 ... %@==%@", url, foofile);
 else 
...

【讨论】:

【参考方案2】:

您也可以使用以下代码访问模拟器文件夹中的文件;

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);

NSString *libraryBaseDirectory = [paths objectAtIndex:0];

NSString *privateDocumentsDirectory = [libraryBaseDirectory stringByAppendingPathComponent:@"ProjacsBODFiles"];

【讨论】:

以上是关于NSURL 字符串给出空值的主要内容,如果未能解决你的问题,请参考以下文章

Jquery Ajax post方法给出空值

RunTime 方法交换 NSURL 空值处理

来自字符串的 NSURL 不起作用

如何在 Swift 中将 NSURL 转换为字符串

从字符串转换 NSURL

NSUrl 未在 NSUserDefault 中存储为绝对字符串