swift - 如何在 Swift5 中使用 ObjectMapper 映射 Alamofire 5.2 响应

标签 swift xcode alamofire objectmapper alamofire5

我有一个这样的模型:

import UIKit
import ObjectMapper

struct Token: Mappable {

    var token: String?
    var deviceId: String?

    init?(map: Map) {

    }


   mutating func mapping(map: Map) {
        token <- map["token"]
        deviceId <- map["device_id"]
    }

}             

因此,使用 Alamofire 发送请求,如下所示:

import ObjectMapper
import Alamofire
  override func viewDidLoad() {
    super.viewDidLoad()
    let request = ...
    AF.request(request).validate(statusCode: 200..<300).responseJSON { (response:AFDataResponse<Any>) in

               let token = Mapper<Token>().map(JSONString: serviceResponse.value) ‌//Not work   


   }
}  

当打印我的响应时,这是正确的,但是我无法使用 ObjectMapper 将其映射到我的对象模型。

最佳答案

如果需要返回值:

    func getUserMapple(completionHandler: @escaping (_ userData: UserMappable) -> ()) {
        
        guard let urlString = URL(string: userUrl) else { return }
        
        AF.request(urlString).responseJSON { (responce) in
            
            switch responce.result {
            case .success(let value):
                guard let castingValue = value as? [String: Any] else { return }
                guard let userData = Mapper<UserMappable>().map(JSON: castingValue) else { return }
            completionHandler(userData)
            case .failure(let error):
                print(error.localizedDescription)
            }
        }
  }

如果需要返回数组:

    func getUserMapple(completionHandler: @escaping (_ dotaData: [DotaModelMapable]) -> ()) {
        
        guard let urlString = URL(string: dotaUrl) else { return }
        
        AF.request(urlString).responseJSON { response in
            
            switch response.result {
            case .success(let value):
                guard let dotaData = Mapper<DotaModelMapable>().mapArray(JSONObject: value) else { return }
                completionHandler(dotaData)
            case .failure(let error):
                print(error.localizedDescription)
            }
        }
  }

关于swift - 如何在 Swift5 中使用 ObjectMapper 映射 Alamofire 5.2 响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62262855/

相关文章:

ios - Swift - 在条件下执行 performSegue

ios - 共享首选项 Swift 4- iOS- 唯一的 Alamofire 用户 ID

ios - iOS 中的 Alamofire 正在接收字典而不是数组

ios - 在 iOS 中使用 Alamofire 上传图片

ios - Appstore图标有光泽效果吗?

swift - View 不会被复制

属性中的 Swift 可变集

ios - 重置 iOS 应用程序的相机权限?

ios - TabBarController 中的 PersonViewController

iphone - 编译 iPhone 应用程序时综合属性错误