【问题标题】:Type of expression is ambiguous without more context on SwiftUI when Text is used multiple times, how to fix it?多次使用 Text 时,SwiftUI 上的表达式类型不明确,没有更多上下文,如何解决?
【发布时间】:2019-11-21 09:58:44
【问题描述】:

我遇到以下错误消息:

没有更多上下文的表达类型是模棱两可的

在这一行:

 Picker(selection: $contact.type, label: Text("Select Testing Type"))

当我用文本添加更多行时,错误弹出。有没有人有同样的问题?怎么解决?

我正在使用 Catalina 和 iOS11。

这里是整个代码sn-p:

导入组合 导入 SwiftUI

class Contact: ObservableObject {
    var objectWillChange = PassthroughSubject <Void, Never>()
    static let types = ["Functional", "Automation", "Manual", "Mobile App", "Performance", "Security", "E2E", "Integration"]
    static let services = ["HandsOn Testing", "Test Management", "Test Process Setup", "Training", "Test Leadership"]
    var type = 0 {didSet { update()}}
    var service = 0 {didSet { update()}}
    var name = "" {didSet { update()}}
    var company = "" {didSet { update()}}
    var city = "" {didSet { update()}}
    var email = "" {didSet { update()}}

    var isValid: Bool{
        if name.isEmpty || company.isEmpty || city.isEmpty || email.isEmpty {
            return false
        }
    }

    func update(){
        //add log
        objectWillChange.send()
    }
}

struct ContentView: View {
    @ObservedObject var contact = Contact()
    var body: some View {
        NavigationView {
            Form {
                Section {
                    Picker(selection: $contact.type, label: Text("Select Testing Type"))
                    { ForEach(0..<Contact.types.count)
                    {Text(Contact.types[$0]).tag($0)
                        }}

                    Picker(selection: $contact.service, label: Text("Select Testing Service"))
                    {ForEach(0..<Contact.services.count)
                    {Text(Contact.services[$0]).tag($0)
                        }}
                }
                Section {
                    TextField($contact.name, placeholder:Text("Name"))
                    TextField($contact.company, placeholder:Text("Company"))
                    TextField($contact.city, placeholder:Text("City"))
                    TextField($contact.email, placeholder:Text("Email"))

                }

                Section {
                    Button(action: {
                        self.sendForm()
                    }) {
                        Text("Send Form")
                    }
                }
                .navigationBarTitle(Text("Contact us"))

            }

        }}
    func sendForm(){

    }}

struct SwiftUIView_Previews: PreviewProvider {
    static var previews: some View {
        ContentView()
    }
}

【问题讨论】:

  • 请注意,当您的 SwiftUI 代码中有错误时,Xcode 可能指向错误的行并显示不相关的错误是一个已知问题
  • 我认为问题在于您的导航视图中有多个项目。请发布整个ContentView 代码并修复格式
  • 好的,谢谢,我已经在描述中添加了整个代码。
  • @Andrew 查看我添加的内容后有什么想法吗?谢谢

标签: ios xcode swiftui macos-catalina


【解决方案1】:

如果您复制/粘贴模块中的代码,那么我认为问题无处不在

ForEach(0..联系方式.types.count)

您使用类型名称而不是变量名称联系人

【讨论】:

  • 那么类型和服务是针对第一个字段的,其中包含一个带有选项的数组。其余字段,例如 TextField($contact.name, placeholder:Text("Name")) 我在之后添加的,此后发生错误。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-17
  • 2019-04-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多