SwiftUI应用偶发崩溃:PlatformListViewBase has no ViewGraph! 求助
问题原因分析与修复方案
核心崩溃原因
你当前的视图结构存在Section嵌套List的错误层级:Section是List的原生分组组件,本应作为List的直接子视图使用,但你反过来在Section内部嵌套了List。这种违反SwiftUI规范的嵌套会导致底层UIKit(UITableView)的视图管理逻辑混乱,当列表滚动、数据更新时,SwiftUI的视图图(ViewGraph)与UIKit的原生视图层级无法同步,最终触发偶发的PlatformListViewBase has no ViewGraph!底层崩溃。
次要风险点
代码中的强制解包操作(category.menuItems!、category.categoryName!)虽然不是本次崩溃的直接原因,但会增加额外崩溃风险,一旦数据为空就会触发nil解包崩溃。
修复方案
1. 修正视图层级结构
将Section作为List的直接子组件,移除Section内部的嵌套List:
List { ForEach(handler.categorys, id: \.id) { category in Section(header: Text("Menu item's - \(category.categoryName ?? "Unknown")")) { ForEach(category.menuItems ?? [], id: \.id) { item in MenuItemCell(overviewHandler: overviewHandler, item: item, currency: currency) } } } }
2. 替换强制解包
用空合并运算符(??)处理可选值,避免nil解包风险:
category.categoryName ?? "Unknown":当分类名称为空时显示默认文本category.menuItems ?? []:当菜单列表为空时传入空数组,避免ForEach报错
内容的提问来源于stack exchange,提问作者Ivars
相关产品推荐
相关产品推荐

