Swift 使用ObjectMapper时调用中的参数标签不正确
我正在使用它将模型对象(类和结构)转换为JSON和JSON 当我尝试创建这样一个实例时,Swift 使用ObjectMapper时调用中的参数标签不正确,swift,swift3,Swift,Swift3,我正在使用它将模型对象(类和结构)转换为JSON和JSON 当我尝试创建这样一个实例时,让person=person(用户名:“name”,年龄:24),我会遇到如下错误: 调用中的参数标签不正确 和额外的参数调用 我相信这与结构初始化的方式有关,我如何解决这个问题 import ObjectMapper func viewDidLoad(){ super.viewDidLoad() let person = Person(username: "name", ag
让person=person(用户名:“name”,年龄:24)
,我会遇到如下错误:
调用中的参数标签不正确
和额外的参数调用
我相信这与结构初始化的方式有关,我如何解决这个问题
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"]
}
}
导入对象映射器
func viewDidLoad(){
super.viewDidLoad()
let person=人(用户名:“姓名”,年龄:24岁)
}
结构人:可映射{
var用户名:字符串?
变量年龄:Int?
init?(map:map){//以符合ObjectMapper的可映射类
}
//可映射
变异函数映射(映射:映射){
username您必须创建如下实例:
如果要对可映射类使用默认的init
let jsonString = "{\"username\":\"username\",\"age\":20}"
let person = Person(JSONString: jsonString) // here you have to send json string as parameter
print(person?.username) // Outputs : Optional("username")
print(person?.age) // Outputs : Optional(20)
似乎您正在尝试使用Person的Syntheticed memberwise初始值设定项。但是,由于您显式定义了另一个初始值设定项,编译器没有合成memberwise初始值设定项,因此您需要手动执行此操作
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"]
}
}
这个初始值设定项只是一个例子,在您的实际应用程序中,我想您实际上希望至少userName
具有非nil值,因此您应该将声明更改为非可选,并相应地更改初始值设定项。我对该库或其Map
类一无所知,但您的Person
类init
方法使用一个名为map
的参数,而不是两个名为username
和age
的参数。似乎您正在尝试使用Person
的Synthesited memberwised初始值设定项。但是,由于您显式定义了另一个初始值设定项,编译器没有合成memberwise初始值设定项,因此您将需要手动操作。当我添加一个额外的初始化器init(username:String,age:Int){}
时,错误被消除了。我相信这是可以的?@user44776是你的定义
可以使用nil
名称和年龄吗?如果可以,那么当然可以
let person = Person(userName: "name", age: 24)
let nameless = Person(age: 20)
let ageless = Person(userName: "name")