You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SwiftUI开发报错:调用RowView时缺少'plans'参数

解决SwiftUI中RowView传参的报错问题

你遇到的核心问题是变量名写错了:在ForEach循环里你定义的当前项变量是plan,但传参时误写成了plans,编译器找不到名为plans的变量,所以报错。

正确的传参方式

把IteneraryView里的RowView()改成:

RowView(plans: plan)

额外的代码优化建议

  1. 去掉多余的ScrollView:List组件本身自带滚动功能,嵌套ScrollView会导致滚动冲突,直接简化代码:
List {
    ForEach(listPlans) { plan in
        RowView(plans: plan)
    }
}
  1. 避免强制解包:你的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 }
}
  1. 解决预览崩溃问题:如果要给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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 01:45:47