gpt4 book ai didi

swift - 使用 ObjectMapper 时调用中的参数标签不正确

转载 作者:行者123 更新时间:2023-11-28 15:19:20 26 4
gpt4 key购买 nike

我正在使用 ObjectMapper将模型对象(类和结构)与 JSON 相互转换。

当我尝试创建这样的实例时 let person = Person(username: "name", age: 24),我得到如下错误:

incorrect argument label in call

and extra argument in call

我认为这与初始化结构的方式有关,我该如何解决这个问题?

import ObjectMapper

func viewDidLoad(){
super.viewDidLoad()

let person = Person(username: "name", age: 24)
}


struct Person: Mappable {
var username: String?
var age: Int?

init?(map: Map) { //To conform to Mappable class of ObjectMapper

}

// Mappable
mutating func mapping(map: Map) {
username <- map["username"]
age <- map["age"]

}

}

最佳答案

您似乎正在尝试使用 Person 的合成成员初始化器。但是,由于您显式定义了另一个初始化程序,因此编译器没有合成成员初始化程序,您需要手动执行此操作。

struct Person: Mappable {
var userName: String?
var age: Int?

init(userName:String? = nil, age:Int? = nil){
self.userName = userName
self.age = age
}

init?(map: Map) { //To conform to Mappable class of ObjectMapper

}

// Mappable
mutating func mapping(map: Map) {
username <- map["username"]
age <- map["age"]

}
}

由于默认值,您可以仅使用用户名、年龄或两者调用初始化程序。

let person = Person(userName: "name", age: 24)
let nameless = Person(age: 20)
let ageless = Person(userName: "name")

这个初始化器只是一个例子,在你的实际应用程序中,我猜你实际上希望至少 userName 有一个非零值,所以你应该将声明更改为非可选的并更改相应的初始化程序。

关于swift - 使用 ObjectMapper 时调用中的参数标签不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46289777/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com