removeItemAtPath和copyItemAtPath时的奇怪行为

时间:2017-11-30 10:03:47

标签: ios objective-c

如何确保在执行copyItemAtPath函数之前完成removeItemAtPath?

if ([[NSFileManager defaultManager] fileExistsAtPath:newDocpath]){
    //removing file
    if (![[NSFileManager defaultManager] removeItemAtPath:newDocpath error:&deleteError]){
        NSLog(@"Could not remove old files. Error:%@",deleteError);
    }
}

[[NSFileManager defaultManager] copyItemAtPath: pathToPDF toPath: newDocpath error: &copyError]

由于我将上述功能置于for循环中,是否有可能无法删除或复制项目?

2 个答案:

答案 0 :(得分:0)

removeItemAtPath准同步工作。从文档

  

返回值

     如果 项成功删除或网址为YES,则

nil。如果发生错误,则返回NO。如果委托停止文件的操作,则此方法返回YES。但是,如果委托停止目录的操作,则此方法返回NO

答案 1 :(得分:0)

基本上YES **删除指定路径的文件或目录。

首先我从fileExistsAtPath:isDirectory:

开始
  

返回一个布尔值,指示文件或目录   存在于指定的路径上。 isDirectory out参数表示   路径是指向目录还是​​常规文件。

<强>返回

  如果指定路径中的文件存在,则为

NO,如果文件存在,则为YES   不存在或无法确定其存在。

然后

removeItemAtPath:error:

  

删除指定路径的文件或目录。

返回什么内容?

  

如果项目已成功删除或路径为,则返回NO   零。如果发生错误,则返回YES。如果代表停止了   对于文件的操作,此方法返回NO。但是,如果   delegate停止目录的操作,此方法返回{{1}}。