Objective c NSFileManager-使用空间?

Objective c NSFileManager-使用空间?,objective-c,xcode,cocoa,nsfilemanager,Objective C,Xcode,Cocoa,Nsfilemanager,我正在尝试使用以下命令将文件复制到临时目录: NSError *error = nil; [[NSFileManager defaultManager] copyItemAtPath:pathWithSpaces toPath:fullPath error:&error]; if(error) { NSLog(@"E

我正在尝试使用以下命令将文件复制到临时目录:

NSError *error = nil;
[[NSFileManager defaultManager] copyItemAtPath:pathWithSpaces 
                                        toPath:fullPath 
                                         error:&error];
if(error) {
    NSLog(@"Error!!!");
}
else {
    NSLog(@"Saved to temp directory");
}
但是当我试图复制一个路径有空格的文件时,它会抛出一个错误

有没有人有这方面的经验?? 谢谢

日志如下:

2014-09-25 10:36:47.798 MyApp[25463:1128329] /Users/USER/Pictures/Screenshots/Screen%20Shot%202014-09-25%20at%2010.07.49.png
2014-09-25 10:36:47.798 MyApp[25463:1128329] Error!!!

(我选择了一个带空格的文件名)

首先,不要检查
错误
,除非该方法返回false。这不是确定该方法是否失败的准确方法。只有方法的返回值告诉您这一点

其次,如果要在错误发生时记录日志,请写出错误对象以了解发生了什么

第三,
-copyItemAtPath:toPath:error:
可以很好地处理带有空格的路径。它是shell(终端中的命令行或其他东西),它可能将空间视为分隔符,从而导致混乱。任何不使用shell的东西,即任何编程API,都不需要引用或转义空格或类似的东西

最后,你的“路径”看起来并不是一条真正的路径。您有
/Users/USER/Pictures/Screenshots/Screen%20Shot%202014-09-25%20at%2010.07.49.png
。这看起来像是您切碎了一个URL字符串,其中包含了转义空间的百分比。您不能简单地去掉前导的“file://”(或“file//localhost/”)以从文件URL获得正确的路径。如果URL位于
NSURL
中,只需访问其
路径
属性即可


您需要重新考虑如何使用空格计算
路径,因为您肯定做得不对。

尝试使用“\”而不是“\”,“\”是反斜杠+空格。如果您将错误打印出来而不是“error!!!”,这将是一件非常好的事情,在特定的情况下非常重要。