SwiftUI开发报错:调用RowView时缺少'plans'参数
解决SwiftUI中RowView传参的报错问题
你遇到的核心问题是变量名写错了:在ForEach循环里你定义的当前项变量是plan,但传参时误写成了plans,编译器找不到名为plans的变量,所以报错。
正确的传参方式
把IteneraryView里的RowView()改成:
RowView(plans: plan)
额外的代码优化建议
- 去掉多余的ScrollView:
List组件本身自带滚动功能,嵌套ScrollView会导致滚动冲突,直接简化代码:
List { ForEach(listPlans) { plan in RowView(plans: plan) } }
- 避免强制解包:你的
groupedEntries方法里用了element.date!,可以利用你写的showDate扩展属性来安全处理可选值:
func groupedEntries(_ result: FetchedResults<Plans>) -> [[Plans]] { return Dictionary(grouping: result) { element in dateFormatter.string(from: element.showDate) }.values.sorted { $0[0].showDate > $1[0].showDate } }
- 解决预览崩溃问题:如果要给
RowView做预览,需要在预览里创建一个有效的Plans实例(依赖Core Data上下文),示例如下:
struct RowView_Previews: PreviewProvider { static var previews: some View { let context = PersistenceController.preview.container.viewContext let testPlan = Plans(context: context) testPlan.title = "测试行程" testPlan.date = Date() return RowView(plans: testPlan) .environment(\.managedObjectContext, context) } }
内容的提问来源于stack exchange,提问作者JR10
相关产品推荐
相关产品推荐

