我正在尝试找出从Cloudkit服务器获取图像的最佳实践。
我没有找到Apple的文档,也没有任何教程,所以想问一下这是否正确。
真的很感谢任何人都可以提供帮助。
import SwiftUI
import UIKit
import CloudKit
struct CustomProductImage: View {
var product: Product
@State var isImageLoaded: Bool = false
var body: some View {
VStack {
if isImageLoaded {
Image(uiImage: ImageCacheHandler.shared.image(forRecord: product.mId ?? "") ?? #imageLiteral(resourceName: "ProductImage"))
.resizable()
.aspectRatio(0.7294117647, contentMode: .fit)
.cornerRadius(5.0)
} else {
Image(uiImage: #imageLiteral(resourceName: "ProductImage"))
.resizable()
.aspectRatio(0.7294117647, contentMode: .fit)
}
}
.frame(width: 218, height: 300)
.onAppear {
self.getImage()
}
}
func getImage() {
if ImageCacheHandler.shared.image(forRecord: product.mId ?? "") == nil && !self.isImageLoaded {
loadImage()
} else {
self.isImageLoaded = true
}
}
func loadImage() {
CloudKitManager.shared.getRecords(withRecordId: [product.mId ?? ""],
pDesiredkeys: [CloudKitConstants.imageurl],
pQualityOfService: .utility,
comp: { (records, error) in
if let record = records?[CKRecord.ID(recordName: self.product.mId ?? "")],
let image = record[CloudKitConstants.imageurl] as? Data {
ImageCacheHandler.shared.cacheImage(data: image, id: self.product.mId ?? "")
self.isImageLoaded = true
}
})
}
}
欢呼