SwiftUI导航时如何将零散参数组装为Book结构体传入目标视图
解决方案
Swift 中的自定义结构体默认会自动生成成员级构造器,不需要你手动编写构造方法,直接把零散字段按属性要求传入即可生成符合要求的Book实例。
前提条件
你的Book结构体中所有存储属性都没有默认值,构造时必须传入全部5个属性的对应值,你需要先确认自己持有group(分组)和name(书名)两个字段的取值。
实现步骤
- 构造
Book实例
把你持有的零散字段传入构造器即可:let book = Book( id: book_id, author: author, chapters: chapters, group: 你持有的分组对应值, name: 你持有的书名对应值 ) - 写
NavigationLink跳转逻辑
直接把构造好的实例传入BookView:NavigationLink { BookView(book: book) } label: { Text("返回书籍页") }
特殊场景处理
如果你确实无法获取group和name的取值,可以给这两个属性添加默认值,后续构造时就可以省略这两个参数:
struct Book: Decodable, Identifiable { var id: Int var author: String var chapters: Int // 添加默认空字符串 var group: String = "" var name: String = "" } // 构造时可以省略有默认值的参数 let book = Book(id: book_id, author: author, chapters: chapters)
优化建议
如果你是从BookView跳转进入ChapterView,建议跳转时直接把完整的Book实例传给ChapterView,不需要拆分零散字段传递,后续返回时可以直接复用该实例,减少参数传递出错的概率。
内容的提问来源于stack exchange,提问作者erikvm
相关产品推荐
相关产品推荐

