提问者:小点点

视图中的Swift更新结构


我很抱歉,我是斯威夫特的新手,可能完全错了。

我正在尝试在我的视图中调用我的结构上的变异函数以添加其他电话或电子邮件。这是我的结构。

struct CreateCustomer: Codable {
        var Phone: [CustomerPhone]
        var Emails: [String]
        init() {
            Phone = [CustomerPhone()]
            Emails = []
        }
        public mutating func addPhone(){
            Phone.append(CustomerPhone())
        }
        public mutating func addEmail(){
            Emails.append("")
        }
    }
struct CustomerPhone: Codable {
    var Phone: String
    var PhoneType: Int
    init(){
        Phone = ""
        PhoneType = 0
    }
}

我正在尝试将手机添加到我的状态变量,其中包含以下内容

Button("Add Phone"){
    $Customer_Create.addPhone()
}

我得到以下错误

无法调用非函数类型的值“绑定”

谢谢你的任何帮助!


共2个答案

匿名用户

如果Customer_Create是一个状态属性变量(如下所示),那么你不需要绑定,直接使用属性

struct ContentView: View {
  @State private var Customer_Create = CreateCustomer()

  var body: some View {
     Button("Add Phone"){
       Customer_Create.addPhone()    // << here !!
     }
  }
}

匿名用户

您不应该通过$访问绑定,您应该简单地访问属性本身。

Button("Add Phone"){
    Customer_Create.addPhone()
}

与您的问题无关,但您应该遵守Swift命名约定,该约定对于变量和属性来说是lowerCamelCase-因此CusterCreate,而不是Customer_Create