我想知道是否有办法以编程方式清空垃圾箱的内容。我目前正在使用以下方法删除位于那里的文件:

    NSFileManager *manager = [NSFileManager defaultManager];
    [manager removeItemAtPath:fileToDelete error:nil];

但是,在我使用此操作后,每次将文件拖到垃圾箱时,都会提示消息:



这一直持续到我注销或 sudo rm -rf 垃圾箱。

谢谢!

最佳答案

您可以使用 NSWorkspace 将东西​​放入垃圾箱,但是删除垃圾箱对于程序来说是一种禁忌,因此您不会找到 API。所以你最好的选择是使用 ScriptBridge。

ScriptingBridge.framework 添加到您的构建目标,并使用以下命令为 Finder 生成头文件:

sdef /System/Library/CoreServices/Finder.app/ | sdp -fh --basename Finder

然后你可以让 Finder 提示用户清空垃圾箱:
#import "Finder.h"

FinderApplication *finder = [SBApplication applicationWithBundleIdentifier:@"com.apple.Finder"];

// activate finder
[finder activate];

// wait a moment (activate is not instant), then present alert message
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.1 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
  [finder emptySecurity:security];
});

有关更多详细信息,请参阅 Scripting Bridge documentation

从 Xcode 7.3 开始,如果您使用 Swift 尝试此操作,您将在尝试查找 Finder.h 中定义的类时遇到链接器错误。因此,您必须创建一个 Objective-C 包装器。

关于objective-c - 通过 Objective-C/Cocoa 清空垃圾箱,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5334445/

10-11 19:36