通过Objective-CC++ocoa清空垃圾桶

通过Objective-CC++ocoa清空垃圾桶,第1张

概述我想知道是否有办法以编程方式清空垃圾桶的内容.我目前正在删除位于那里的文件: NSFileManager *manager = [NSFileManager defaultManager]; [manager removeItemAtPath:fileToDelete error:nil]; 但是,在我使用此 *** 作后,每次将文件拖到回收站时,系统都会提示我: Are you sure you 我想知道是否有办法以编程方式清空垃圾桶的内容.我目前正在删除位于那里的文件:

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

但是,在我使用此 *** 作后,每次将文件拖到回收站时,系统都会提示我:

Are you sure you want to delete
“xxxxxx.xxx”?This item will be deleted
immediately. You can’t undo this
action.

这一直持续到我退出或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 messagedispatch_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/C++ocoa清空垃圾桶全部内容,希望文章能够帮你解决通过Objective-C/C++ocoa清空垃圾桶所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1006670.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-22
下一篇 2022-05-22

发表评论

登录后才能评论

评论列表(0条)

保存