Поскольку следующий код является замыканием.
manager.requestImageData(for: asset, options: options) { data, _, _, _ in
if let data = data {
img = UIImage(data: data)
}
}
И замыкания выполняются в фоновом потоке и не являются встроенными.Выполнение закрытия может занять некоторое время и может не вернуть данные мгновенно.
Вы можете попробовать создать обратный вызов закрытия для загрузки изображения.
func getUIImage(asset: PHAsset, complition : @escaping ((_ img:UIImage?,_ error:String?) -> Void)){
let manager = PHImageManager.default()
let options = PHImageRequestOptions()
options.version = .original
options.isSynchronous = true
manager.requestImageData(for: asset, options: options) { data, _, _, _ in
if let data = data,
let img = UIImage(data: data){
complition(img,nil)
}else{
complition(nil,"Something went wrong")
}
}
}
Вы можете попробовать это.Надеюсь, что это поможет.