【问题标题】:Trash files inside user-selected folder inside iCloud DriveiCloud Drive 内用户选择的文件夹中的垃圾文件
【发布时间】:2019-11-01 19:47:23
【问题描述】:

我的应用程序适用于任何用户选择的文件夹中的用户 txt 文件(创建、更改、删​​除)。我只是在内部存储书签以访问用户选择的文件夹和文件。

现在,当源文件夹位于 iCloud Drive 中时,使用 macOS Catalina,系统仍然允许我创建和编辑文件。 但不允许丢弃一个。当我尝试通过 [[NSFileManager defaultManager] trashItemAtURL: ... ] 执行此操作时,我收到以下错误:

Error Domain=NSCocoaErrorDomain
Code=3328 

"<filename> couldn’t be moved to the trash
because the volume “<APFS volume name>”
doesn’t have one."

UserInfo={
NSURL=file:///... <filepath>.txt,
NSUserStringVariant=Trash
}

注意:这只发生在应用被沙盒化时。

知道如何正确删除文件吗?


附:我知道有一个NSWorkspace recycle... 方法,但是它会产生一个不适合我的额外删除提示。

附言我仍然可以使用[[NSFileManager defaultManager] removeItemAtURL: ...] 方法,但我需要恢复目标文件以防用户改变主意。

【问题讨论】:

  • 奇怪的是,当我尝试 detect 文件是否在 iCloud 垃圾箱中时,我得到了同样的错误:stackoverflow.com/q/64663834/43615 - 在我的情况下,该应用程序甚至没有被沙盒化.

标签: file cocoa delete-file macos-catalina recycle-bin


【解决方案1】:

好的。看起来这是一个罕见的案例。但如果你遇到同样的情况,我的结果是这样的:

有一个已弃用的函数 - FSMoveObjectToTrashSync - 仍然可以正常工作。它暂时救了我的命。

【讨论】:

  • 不幸的是,FSMoveObjectToTrashSync 在 Swift 中似乎不可用。
猜你喜欢
  • 2018-03-24
  • 2019-05-07
  • 2021-08-07
  • 2021-11-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多