Удалять файлы в выбранной пользователем папке внутри iCloud Drive

Мое приложение работает с пользовательскими txt-файлами (создание, изменение, удаление) внутри любой выбранной пользователем папки. Я просто храню закладку внутри, чтобы получить доступ к этой выбранной пользователем папке и файлам.

Теперь с macOS Catalina, когда исходная папка находится внутри iCloud Drive, система по-прежнему позволяет мне создавать и редактировать файлы. Но не позволяет удалить один из них. Когда я пытаюсь сделать это через [[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
}

Примечание. Это происходит только в том случае, если приложение находится в песочнице.

Есть идеи, как правильно отправить файл в корзину?


P.S. Я знаю, что есть метод NSWorkspace recycle..., но он выдает дополнительное приглашение на удаление, которое мне не подходит.

П.П.С. Я все еще могу использовать метод [[NSFileManager defaultManager] removeItemAtURL: ...], но мне нужно, чтобы целевой файл можно было восстановить, если пользователь передумает.


person UJey    schedule 01.11.2019    source источник
comment
Любопытно, что я получаю ту же ошибку, когда пытаюсь обнаружить, находится ли файл в корзине iCloud: stackoverflow. com/q/64663834/43615 - и в моем случае приложение даже не изолировано.   -  person Thomas Tempelmann    schedule 03.11.2020


Ответы (1)


Ok. Похоже, это редкий случай. Но если вы попали в ту же ситуацию, вот что у меня получилось:

Есть устаревшая функция — FSMoveObjectToTrashSync — которая до сих пор прекрасно работает. Это спасло мою задницу на данный момент.

person UJey    schedule 04.11.2019
comment
К сожалению, FSMoveObjectToTrashSync не доступен в Swift. - person Nickkk; 18.11.2019