大家好 !
我正在使用 SwiftData 和一个旨在更新@Model 的视图。
这是我的数据:
@Model
final class Pet {
var name: String
var gender: Gender
var type: String
var race: String
var birthdate: Date
var color: String
var eyeColor: String
var photo: Data?
var identification: Identification?
init(
name: String,
gender: Gender,
type: String,
race: String,
birthdate: Date,
color: String,
eyeColor: String,
photo: Data?
) {
self.name = name
self.gender = gender
self.type = type
self.race = race
self.birthdate = birthdate
self.color = color
self.eyeColor = eyeColor
self.photo = photo
}
}
@Model
final class Identification {
var chip: Int?
var chipLocation: String?
var tatoo: String?
var tatooLocation: String?
init(chip: Int?, chipLocation: String?, tatoo: String?, tatooLocation: String?) {
self.chip = chip
self.chipLocation = chipLocation
self.tatoo = tatoo
self.tatooLocation = tatooLocation
}
}
如你所见,我有一个名为Identification的类型,嵌套在Pet模型中,它是可选的。
此外,它的所有属性也是可选的。
我正在尝试按以下方式编辑芯片属性:
struct EditInformationView: View {
@Environment(Pet.self) var pet
var body: some View {
@Bindable var pet = pet
Form {
Section("Identification") {
TextField("Chip", value: $pet.identification?.chip)
}
}
}
}
我的问题很简单,如何使用我的 TextField 编辑芯片参数?
我有点迷茫了,希望能得到一点帮助,非常感谢:)
我尝试使用可选链接,就像 Xcode 建议的那样,但没有效果。
您可以尝试使用中间变量和这种简单的方法
.onSubmit
,如示例代码所示:请注意,您还可以使用
.onChange(of: chipVal)
您可以使用任何“可选绑定解决方案”
选项 1
选项 2
如果你搜索的话,还会发现其他几个。
本质是先处理身份,再处理属性。处理身份的方法有无数种。