Обновление за апрель 2020 года
К счастью, автор библиотеки недавно обновил ее, добавив функцию удаления альбома, о которой говорилось в этом ответе. Вы можете увидеть их запрос на получение . Или обратитесь к вызову метода removeAssetsInAlbum
в README
Проблема
photo_manager
библиотека использует PHAssetChangeRequest метод deleteAssets (_:) . Вы можете увидеть это здесь . Это позволит удалить сам файл, а не просто удалить его из альбома (подробнее об этом в разделе «Объяснение»)
Решение
Решение заключается в использовании методов PHAssetCollectionChangeRequest . Зависит от вашего варианта использования:
Перемещение ресурсов из альбома в другой
Удаление ресурсы из альбома
Добавление ресурсов в альбом
Пояснение
Существует разница между удалением активов и удалением активов , Удаление файла актива выполняется с помощью PHAssetChangeRequest , который окончательно удаляет файл актива и его ссылки из альбомов. Но удаление ресурса выполняется через PHAssetCollectionChangeRequest , который удаляет ссылку на ресурс (не файл) из альбома (ов) без удаления самого файла. Отметьте ответ .
Что делать? Как можно применить это решение?
Этот раздел устарел, но сохраняется для других случаев использования, когда photo_manager
не может быть использован, пожалуйста, обратитесь к верхней части этого ответа, если вы хотите использовать photo_manager
У вас есть следующие варианты, чтобы выбрать один из них, который решит вашу проблему:
- Найдите методы альбома, которые я объяснил выше, в библиотеке
photo_manager
, может это там? EDIT1 Я только что искал PHAssetCollectionChangeRequest методы. В настоящее время не поддерживается / не используется. - Добавить проблему в библиотеку и попросить автора внести указанные изменения
- Добавить их в библиотеку самостоятельно через PR или самостоятельно клонировать версия библиотеки
- Используйте собственный канал платформы и работайте с ним самостоятельно.
Пример изменения:
В настоящее время photo_manager
использует метод PHAssetChangeRequest
deleteAssets (_:) :
[PHAssetChangeRequest deleteAssets:result];
Это должно измениться на использование метода PHAssetCollectionChangeRequest
removeAssets (_:) :
[PHAssetCollectionChangeRequest removeAssets:result];