Swift/Alamofire/ObjectMapper:忽略nil值
我只是想知道这是否可行,因为我正在努力避免创建重复/非常相似的模型 例如,如果我有以下JSON:Swift/Alamofire/ObjectMapper:忽略nil值,swift,alamofire,alamofireobjectmapper,Swift,Alamofire,Alamofireobjectmapper,我只是想知道这是否可行,因为我正在努力避免创建重复/非常相似的模型 例如,如果我有以下JSON: { "1001": { "first_name": "James", "last_name": "Smith", "age": 30, } "1002": { "first_name": "Sarah", "last_name": "Jones", } } 我有以下类来映射用户数据: class UserModel: Mappable {
{
"1001": {
"first_name": "James",
"last_name": "Smith",
"age": 30,
}
"1002": {
"first_name": "Sarah",
"last_name": "Jones",
}
}
我有以下类来映射用户数据:
class UserModel: Mappable {
var firstName: String?
var lastName: String?
var age: Int?
required init?(map: Map) {}
func mapping(map: Map) {
start <- map["first_name"]
current <- map["last_name"]
stage <- map["age"]
}
}
在发出请求时,是否有办法忽略任何
nil
值?试图避免创建另一个UserModel
,该模型已被删除,并且宁愿保留一个模型,而忽略我知道不会出现在响应中的键。您可以使用Codable
struct Model : Codable {
let firstName,lastName:String
let age:Int?
}
您可以使用
Codable
struct Model : Codable {
let firstName,lastName:String
let age:Int?
}
试试这个:
struct UserModelValue: Codable, Equatable {
let firstName: String?
let lastName: String?
let age: Int?
enum CodingKeys: String, CodingKey {
case firstName = "first_name"
case lastName = "last_name"
case age = "age"
}
init(firstName: String?, lastName: String?, age: Int?) {
self.firstName = firstName
self.lastName = lastName
self.age = age
}
}
typealias UserModel = [String: UserModelValue]
试试这个:
struct UserModelValue: Codable, Equatable {
let firstName: String?
let lastName: String?
let age: Int?
enum CodingKeys: String, CodingKey {
case firstName = "first_name"
case lastName = "last_name"
case age = "age"
}
init(firstName: String?, lastName: String?, age: Int?) {
self.firstName = firstName
self.lastName = lastName
self.age = age
}
}
typealias UserModel = [String: UserModelValue]
如果是1001”
或者1001”
那么[Int:Model]
或者[String:Model]
分别是1001”
或者1001
然后[Int:Model]
或者[String:Model]
都是无效的