Получение даты модификации PHAsset

Я пишу инструмент для резервного копирования рулона камеры и использую время модификации активов в качестве проверки того, следует ли создавать резервную копию файла или нет. Вот как я получаю вещи:

PHFetchResult *result = [PHAsset fetchAssetsWithMediaType:PHAssetMediaTypeImage options:nil];

for (PHAsset *asset in result)
{
    // get modification date with [asset modificationDate] timeIntervalSince1970]
}

Работает вроде бы нормально, но вот проблема: если уже заархивированное изображение открыть в приложении "Фотографии" только для его просмотра - меняется дата модификации. Нет никакого редактирования или чего-то подобного — просто факт просмотра изображения устанавливает дату на что-то другое. Почему он это делает и есть ли способ обойти это?


person Marius    schedule 18.09.2019    source источник
comment
Почему вы проверяете, были ли изменены? Вы изменяете изображение после резервного копирования? Почему у вас нет даты, когда была сделана последняя резервная копия, и если какой-либо элемент был создан после этой даты, вы его резервируете?   -  person Deryck Lucian    schedule 18.09.2019
comment
@DeryckLucian именно поэтому я проверяю дату модификации - я делаю несколько фотографий, делаю их резервную копию, а позже ретуширую и снова делаю резервную копию. Таким образом, дата создания не является решением этой ситуации.   -  person Marius    schedule 20.09.2019
comment
@Мариус, у тебя есть какое-нибудь решение для этого? Я также сталкиваюсь с той же проблемой. Дата модификации меняется каждый раз, когда я получаю PHAsset.   -  person Mohd Haider    schedule 10.09.2020


Ответы (1)


Может быть, это может решить проблему.

let adjustmentResources = PHAssetResource.assetResources(for: asset).filter { $0.type == .adjustmentData }
            
print("adjustmentResources = \(adjustmentResources)")

if adjustmentResources.count > 0 {


}

если AdjustResources.count больше 0. Тогда он изменяется, иначе нет.

person Mohd Haider    schedule 10.09.2020