ios 使用对象列表中的值更新状态

u7up0aaq  于 2023-05-02  发布在  iOS
关注(0)|答案(1)|浏览(203)

我有一个类:

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
        }
    }
}

我相信有一个更好的方法来做到这一点,但我很难找到答案。

yzuktlbb

yzuktlbb1#

func updateDistance() {

self.distance = clubLengths.map{$0.clubName == clubName}.first.distance

}

尝试使用map,就像我上面展示的那样。

相关问题