如何解决SwiftUI错误:无法转换“ UIImage”类型的值?关闭结果类型“无效”
我收到以下SwiftUI错误:
var assetimage : UIImage? {
if PHPhotoLibrary.authorizationStatus() == .authorized {
let allPhotosOptions = PHFetchOptions()
allPhotosOptions.sortDescriptors = [NSSortDescriptor(key: "creationDate",ascending: true)]
let assetsFetchResults = PHAsset.fetchAssets(with: allPhotosOptions)
if assetsFetchResults.count > 0 {
let asset = assetsFetchResults.lastObject
if asset != nil {
let options = PHImageRequestOptions()
options.isNetworkAccessAllowed = true
options.version = .current
PHCachingImageManager().requestimage(for: asset!,targetSize: CGSize(width: 64 * UIScreen.main.scale,height: 64 * UIScreen.main.scale),contentMode: .aspectFill,options: options,resultHandler: { img,_ in
dispatchQueue.main.async {
return img //Error Here
}
})
} else {
return nil
}
} else {
return nil
}
}
return nil
}
我收到以下错误:
Cannot convert value of type 'UIImage?' to closure result type 'Void'
解决方法
当您从completionHandler
异步访问图像时,请使用PHCachingImageManager
将其更改为使用func assetImage(_ completion: @escaping (UIImage?) -> Void) {
if PHPhotoLibrary.authorizationStatus() == .authorized {
let allPhotosOptions = PHFetchOptions()
allPhotosOptions.sortDescriptors = [NSSortDescriptor(key: "creationDate",ascending: true)]
let assetsFetchResults = PHAsset.fetchAssets(with: allPhotosOptions)
if assetsFetchResults.count > 0 {
let asset = assetsFetchResults.lastObject
if asset != nil {
let options = PHImageRequestOptions()
options.isNetworkAccessAllowed = true
options.version = .current
PHCachingImageManager().requestImage(for: asset!,targetSize: CGSize(width: 64 * UIScreen.main.scale,height: 64 * UIScreen.main.scale),contentMode: .aspectFill,options: options,resultHandler: { img,_ in
DispatchQueue.main.async {
completion(img)
}
})
} else {
completion(nil)
}
} else {
completion(nil)
}
} else {
completion(nil)
}
}
的方法。
self.assetImage { (image) in
}
用法
{{1}}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。