【发布时间】: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 使用来自NSProcessInfo 的NSTemporaryDirectory 和globallyUniqueString
【问题讨论】:
-
使用最少的代码行数是没有代价的。使用一些中间变量,这样你就有机会检查你的代码哪里出错了。而且您的代码处理文件扩展名错误。
-
查看文档有哪些处理文件路径的方法,并使用它们。例如 initFileURLWithPath,而不是 URLWithString。
-
谢谢伙计。代码处理文件扩展名错误是什么意思?
标签: ios objective-c nsurl