Swift/Alamofire/ObjectMapper:忽略nil值

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 {

我只是想知道这是否可行,因为我正在努力避免创建重复/非常相似的模型

例如,如果我有以下JSON:

{ 
  "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]
都是无效的