我应该如何分配我的数据模型以使用 Alamofire 映射 JSON?

How should I assign my data models to map the JSON using Alamofire?

我是新手,所以我制作了一些模型用于映射 JSON 但是早期有一些模型可以显示模板,现在我要在视图上显示一些真实的内容而不是使用 Alamofire。这可能很愚蠢,但我应该如何 assign/replace 数据模型才能使其正常工作? 这是 get 方法:

friendsAPI.getFriends { [weak self] users in
                 self?.friends0 = users!  // here is the crash happens because there are two different data models - `FriendModel` and `UserModel`
                 self?.tableView.reloadData()
                 print(users)
             }

UserModel我习惯在不同的视图上显示一些内容:

struct UserModel: Equatable {
    static func == (lhs: UserModel, rhs: UserModel) -> Bool {
        lhs.userSurname == rhs.userSurname
    }
    
    let userFirstName: String
    let userSurname: String
    let userPhoto: UIImage?
    var userPhotos: [UIImage]
    let userAge: Int
    let id: Int
}

现在有 FriendModel 用于解析 JSON:

// MARK: - FriendsResponse
 
 class FriendsResponse: Codable {
     let response: FriendsModel
 }

 // MARK: - Response

 class FriendsModel: Codable {
     let count: Int
     let items: [FriendModel]
 }

 // MARK: - Item

 class FriendModel: Codable {
     let id: Int
     let lastName, trackCode, firstName: String
     let photo100: String

     enum CodingKeys: String, CodingKey {
         case id
         case lastName = "last_name"
         case trackCode = "track_code"
         case firstName = "first_name"
         case photo100 = "photo_100"
     }
 }

在我的大部分应用程序中,我使用 UserModel 来处理和显示内容。 那么,我应该如何分配这个数据模型呢? P.S.: 如果有人能帮助我,我会很高兴!谢谢!

添加从 FriendModel 转换为 UserModel 的方法:

struct UserModel {
    init(friend: FriendModel) {
        id = friend.id
        userFirstName = friend.firstName
        userSurname = friend.lastName
        ... // assign all the other fields as needed
    }
}

然后用它来转换你的结果:

friendsAPI.getFriends { [weak self] apiFriends in
    self?.friends0 = apiFriends.map({ UserModel(friend: [=11=]) })
}

这是一个 init 方法,但您可以随意将它放在像 func userFromFriend(_ friend: FriendModel) -> UserModel 这样的普通 func 中,然后将该 func 放在任何您想要的地方。