来自字符串的 NSURL 不起作用

Posted

技术标签:

【中文标题】来自字符串的 NSURL 不起作用【英文标题】:NSURL from string not working 【发布时间】:2016-03-18 07:33:57 【问题描述】:

编写了一个在临时文件夹中提取 zip 文件的方法,并使得类中的所有方法都使用 NSURL 而不是路径启动,但是当尝试将路径更改为 NSURL 时,它返回 null。

//handles all ZIP Extraction
-(NSURL*)handleZIPExtractionAtDestination:(NSURL*)destinationURL

    NSString *destPath=[[destinationURL path]
                     stringByAppendingPathComponent:
                        [[[_archiveURL lastPathComponent] componentsSeparatedByString:@"."]
                         firstObject]];
    
    BOOL result=[SSZipArchive unzipFileAtPath:[_archiveURL path] toDestination:destPath];
    
    if(!result)
    
        NSLog(@"Couldn't extract the Files.");
        return nil;
    
    NSLog(@"%@",destPath);
    NSURL *url=[NSURL URLWithString:destPath];
    NSLog(@"%@",url);
  
    return url;

结果:

destPath=/private/var/mobile/Containers/Data/Application/43DB7D13-9999-4231-B8AB-885CF8757931/tmp/715F6E97-968B-4FD9-A517-D9C2320A85A3-3213-0000043B8B4AFD91/900156_d3728>

url=null

destPath 使用来自NSProcessInfoNSTemporaryDirectorygloballyUniqueString

【问题讨论】:

使用最少的代码行数是没有代价的。使用一些中间变量,这样你就有机会检查你的代码哪里出错了。而且您的代码处理文件扩展名错误。 查看文档有哪些处理文件路径的方法,并使用它们。例如 initFileURLWithPath,而不是 URLWithString。 谢谢伙计。代码处理文件扩展名错误是什么意思? 【参考方案1】:
NSURL *fileURL = [[NSURL alloc] initFileURLWithPath:filePath];

试试这个

【讨论】:

【参考方案2】:

结果为空,因为您的 destPath 变量包含的相对 url 路径不完整 url。对于 NSURL,您需要像 http://web.com/you/file/path.html 这样的完整路径 如果你想要本地路径,那么它应该类似于file:///path/to/your/file.html

【讨论】:

只需在您的 destPath 变量之前附加 file:/// 就可以了

以上是关于来自字符串的 NSURL 不起作用的主要内容,如果未能解决你的问题,请参考以下文章

来自 Java 的 Discord Webhook 消息中的表情符号和特殊字符不起作用

来自 GmailMessage 类正则表达式的 Google Apps 脚本 getPlainBody() 不起作用

NSURLSession 后台下载不起作用

RestKit 保存 PersistentStore 不起作用

AAC 格式的 xCode 录制不起作用

iOS Share GIF(动画图像)不起作用