Есть ли способ ускорить получение данных PHAsset, таких как размер файла?

Мы разрабатываем приложение для хранения данных, которое, помимо прочего, синхронизирует и создает резервные копии фотографий на устройстве пользователя с облаком. Мы используем размер файла и имя изображения вместе, чтобы сформировать временный хеш для сравнения. Проблема, с которой мы сталкиваемся, заключается в том, что когда пользователи с большим количеством фотографий на своем устройстве (> 10 КБ) сначала регистрируются, загрузка и получение файлов с размером файла занимает длительное время ~ 3,5 минуты.

Мы используем PHImageManager следующим образом:

photoManager.requestImageData(for: asset, options: options, resultHandler: callback)

который вызывается и обрабатывается здесь:

let semaphore = DispatchSemaphore(value: 0)
    let operation = GetOriginalImageOperation(photoManager: self.photoManger,
                                              asset: asset) { (data, string, orientation, dict) in
        if let wrapDict = dict, let dataValue  = data {
            if let name = asset.originalFilename {
                originalFileName = name
            }
            if let unwrapedUrl = wrapDict["PHImageFileURLKey"] as? URL {
                url = unwrapedUrl
            }
            size = UInt64(dataValue.count)
            md5 = String(format: "%@%i", originalFileName, size)

            semaphore.signal()
        } else {
            semaphore.signal()
        }
    }

Размер файла не является частью метаданных, поэтому поиск занимает время (например, в Android это не так).

Кто-нибудь знает способ ускорить это? Может быть, массовый поиск?

Заранее спасибо.

0 ответов

Другие вопросы по тегам