Есть ли способ ускорить получение данных 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 это не так).
Кто-нибудь знает способ ускорить это? Может быть, массовый поиск?
Заранее спасибо.