【发布时间】:2022-01-21 11:14:50
【问题描述】:
我收到错误无法将类型“()”的值转换为预期的参数类型“(() -> Void)?”同时使用执行操作 onAppear 功能。下面是代码。
这是显示图像/视频/PDF 文件的视图
struct AssetView: View {
@ObservedObject var messageAttachmentViewModel: MessageAttachmentViewModel
var index: Int
var body: some View {
let messageAttachmentModel = messageAttachmentViewModel.commonMessageAttachmentModel[index]
switch messageAttachmentModel.uploadStatus {
case .idle:
Color.clear.onAppear(perform: messageAttachmentViewModel.uploadFileData(index: index)) // ERROR
case .failed(let error):
ProgressView()
case .loading(let progress):
// print(progress)
ProgressView(value: progress.fractionCompleted, total: Double(progress.totalUnitCount))
case .loaded:
ZStack(alignment: .trailing) {
if messageAttachmentModel.assetType == .Photo {
PhotoView(messageAttachment: messageAttachmentModel)
} else if messageAttachmentModel.assetType == .Video {
VideoView(messageAttachment: messageAttachmentModel)
} else if messageAttachmentModel.assetType == .PDF {
PDFView(messageAttachment: messageAttachmentModel)
}
}
.background(Color.red)
.frame(width: 150, height: 150)
}
}
}
【问题讨论】:
-
onAppear采用函数(闭包),而不是函数调用。你的意思是perform: {messageAttachmentViewModel.uploadFileData(index: index)})(注意花括号)
标签: xcode swiftui closures completionhandler