【问题标题】:Unable to move items to Trash无法将项目移动到废纸篓
【发布时间】:2013-08-05 22:55:07
【问题描述】:

我正在尝试将项目从“下载”移动到我的“废纸篓”文件夹,但首先不删除它们。我在下面的实现中缺少什么,文件没有移动。


具体说明:

 NSString *trashpath=[NSHomeDirectory() stringByAppendingPathComponent:@".Trash"];
 NSString *downloadpath=[NSHomeDirectory() stringByAppendingPathComponent:@"Downloads"];

- (void) moveToTrash{
    NSError * error = nil;
    NSArray * list =  [_filemanager contentsOfDirectoryAtPath:_downloadpath error:&error];


    //Move items to the trash
    for(id obj in list){
        NSString *sourcepath = [_downloadpath stringByAppendingPathComponent:obj];
        NSString *destpath= [_trashpath stringByAppendingPathComponent:obj];

        if([_filemanager moveItemAtPath:sourcepath toPath:destpath error:&error] == YES)
            NSLog(@"Moved to trash :%@ ",destpath);
        else
            NSLog(@"Unable to move %@ ",sourcepath);

    }
}

我按照 BergQuester 的建议尝试使用以下代码

   if([[NSWorkspace sharedWorkspace] performFileOperation:NSWorkspaceRecycleOperation source:_downloadpath
        destination:@"" files:list tag:nil] == YES)
        NSLog(@"Moved to Trash");
    else
        NSLog(@"Unable to move :%@",[error localizedFailureReason]);

我的输出中出现 Unable to move :(null)。

文件确实在那里,所以我不确定问题仍然存在。

【问题讨论】:

标签: objective-c macos nsfilemanager


【解决方案1】:

您可以通过在 else 中记录错误来找出问题所在:

NSLog(@"Unable to move %@ %@", sourcepath, [error localizedDescription]);

此外,除非您在遇到错误时中止循环,否则您应该将error 重置为nil

另外,您可能应该使用 NSWorkspaceperformFileOperation:NSWorkspaceRecycleOperation 而不是单独移动每个文件:

[[NSWorkspace sharedWorkspace] performFileOperation:NSWorkspaceRecycleOperation
                                             source:_downloadpath
                                        destination:@""
                                              files:list
                                                tag:nil];

【讨论】:

  • 这不是一个有用的错误。试试我添加的 NSWorkspace 方法。
  • 试过你的方法,没有运气,目的地应该有一个空的刺值吗? ===> 目的地:@""
  • 是的,NSWorkspaceRecycleOperation 定义了放置文件的位置。 (每个卷实际上都有自己的垃圾文件夹)。我不知道为什么它不适合你。
  • 附带说明,用户可能不太高兴您删除了他们下载文件夹中的所有内容。除非您正在创建一个可以做到这一点的实用程序。
  • 我正在为此创建它,更多的是供个人使用和代码练习。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-02-16
  • 2019-07-04
  • 2019-06-21
  • 1970-01-01
相关资源
最近更新 更多