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

SwiftUI Picker选中完整Recipe对象并保存的实现疑问

解决SwiftUI Picker选中完整Recipe对象的问题

直接调整下面几个关键点,就能让Picker绑定并返回完整的Recipe对象:

  1. 让Recipe类型遵循Identifiable协议
    你的Recipe已经自带ID字段,刚好满足Identifiable的要求,能让SwiftUI自动识别每个对象的唯一性。示例结构体如下:
struct Recipe: Identifiable, Codable {
    let id: Int // 换成你API返回的ID类型,比如UUID/String都可以
    let name: String
    // 其他API返回的字段
}
  1. 修改选中变量的类型
    把selectedItem的类型改成可选的Recipe(初始状态可能没有选中项):
@State private var selectedItem: Recipe?
  1. 给Picker选项添加匹配的Tag
    Picker要求每个选项对应一个和selection变量类型一致的标记,这里直接把当前的Recipe对象设为tag:
Picker("Pick a recipe", selection: $selectedItem) {
    ForEach(recipes) { recipe in 
        Text(recipe.name)
            .tag(recipe) // 关键:将完整对象作为选项的标记
    }
}

如果不想让Recipe遵循Identifiable,也可以在ForEach里显式指定ID字段,写法如下:

Picker("Pick a recipe", selection: $selectedItem) {
    ForEach(recipes, id: \.id) { recipe in 
        Text(recipe.name)
            .tag(recipe)
    }
}

完成以上操作后,选中Picker选项时,selectedItem就会被赋值为对应的完整Recipe对象,后续提交API时直接使用这个变量即可,示例:

// 提交到API的逻辑
if let selectedRecipe = selectedItem {
    // 将selectedRecipe编码后发送到你的.NET后端API即可
}

内容的提问来源于stack exchange,提问作者Anders

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 03:40:34