SwiftUI调用Firestore addData函数出现类型转换错误求助
错误原因与解决方案
问题根源
你在Button的action参数里直接执行了model.addData(...)方法,但Button的action要求接收一个无参数、返回值为Void的闭包(类型是() -> Void)。而addData方法本身的返回值是Void(也就是()),你把这个返回值直接传给了需要闭包的参数,导致类型不匹配,触发了报错。
修复代码
把addData的调用包裹在闭包中,修改按钮部分的代码即可:
Button(action: { model.addData( availableSeats: availableSeats, image: image, description: description, duration: duration, name: name, place: place, startTime: startTime ) }) { Text("Save") }
额外优化建议
- 目前
duration、availableSeats这类本该是数字的字段用了String类型,建议改成Int类型,配合TextField的数字输入配置,避免存入无效的非数字数据。 - 可以给
addData方法添加错误提示逻辑,比如用@Published变量抛出提示,让用户知道保存是否成功。
内容的提问来源于stack exchange,提问作者DANILA BYKHOVOY
相关产品推荐
相关产品推荐

