提问者:小点点

无法将类型“text”的值转换为闭包结果类型“_”


出现以下错误:

无法将类型“text”的值转换为闭包结果类型“_”

在我的SwiftUI选择器:

struct Settings: View {
    @State var minAge = UserSettings().minAge
    @State var maxAge = UserSettings().maxAge
    @State var chosenSeeking = UserSettings.Seeking.both

    var body: some View {
        VStack {
            Picker("Picker", selection: $chosenSeeking) {
                ForEach(UserSettings.Seeking.AllCases, id: \.self) { chosen in
                    Text(String(chosen))
                }                
        }.padding(40)
    }
}

我试图通过将usersettings.seeking.allcases传入到上面的foreach来显示枚举搜索的每个事例

我的模型如下:

class UserSettings: ObservableObject {
    @Published var minAge = 18.0
    @Published var maxAge = 99.0
    @Published var seeking = Seeking.both

    enum Seeking: Identifiable, CaseIterable {
        case male, female, both
        var id: Seeking {self}

    }
} 

知道问题出在哪里吗?


共1个答案

匿名用户

您需要使用allcases而不是allcases,并在stringinit中添加描述:参数来修复您的问题。 另外,您不需要给出id:\.self,因为它已经是可识别的。

struct Settings: View {
    @State var minAge = UserSettings().minAge
    @State var maxAge = UserSettings().maxAge
    @State var chosenSeeking = UserSettings.Seeking.both

    var body: some View {
        VStack {
            Picker("Picker", selection: $chosenSeeking) {
                ForEach(UserSettings.Seeking.allCases) { chosen in
                    Text(String(describing: chosen))
                }                
        }.padding(40)
    }
}