来自字符串的 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 使用来自NSProcessInfo
的NSTemporaryDirectory
和globallyUniqueString
【问题讨论】:
使用最少的代码行数是没有代价的。使用一些中间变量,这样你就有机会检查你的代码哪里出错了。而且您的代码处理文件扩展名错误。 查看文档有哪些处理文件路径的方法,并使用它们。例如 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() 不起作用