我有一个类:
struct ClubLength: Identifiable, Decodable, Hashable {
var id: Int
var clubName: String
var distance: Int
}
还有一个选择器,它从[ClubLength]
列表中获取值:
Picker("Club", selection: $clubName) {
ForEach(clubLengths, id: \.self) {
Text($0.clubName)
}
}
.onChange(of: clubName) { _ in
updateDistance()
}
当用户选择一个新的俱乐部时,我不希望发生的是根据该俱乐部的ClubLength.distance
值更改另一个State变量。
我尝试循环遍历ClubLength
的列表,直到ClubLength.clubName == clubName
,但是我得到了一个错误:No exact matches in reference to static method 'buildExpression'
func updateDistance() {
ForEach(clubLengths, id: \.self) {
if ($0.clubName == clubName) {
self.distance = $0.distance
}
}
}
我相信有一个更好的方法来做到这一点,但我很难找到答案。
1条答案
按热度按时间yzuktlbb1#
尝试使用
map
,就像我上面展示的那样。