【问题标题】:ObjectMapper failed to serialize response. From API Response using AlamofireObjectMapperObjectMapper 无法序列化响应。来自使用 AlamofireObjectMapper 的 API 响应
【发布时间】:2018-10-17 11:18:23
【问题描述】:

很快,我正在使用 AlamofireObjectMapper。但我收到错误 “ObjectMapper 无法序列化响应。” 这是我的 api 响应和模型,请给我解决方案。作为回应,没有任何空值。

这是 API 响应

{"status":true,"result":[{"id":"246","sortname":"ZW","name":"Zimbabwe","phonecode":"263"},{"id":"245","sortname":"ZM","name":"Zambia","phonecode":"260"},{"id":"202","sortname":"ZA","name":"South Africa","phonecode":"27"},{"id":"244","sortname":"YU","name":"Yugoslavia","phonecode":"38"},{"id":"141","sortname":"YT","name":"Mayotte","phonecode":"269"},{"id":"243","sortname":"YE","name":"Yemen","phonecode":"967"},{"id":"91","sortname":"XU","name":"Guernsey and Alderney","phonecode":"44"}]}

这是调用 API

   Alamofire.request(geturl, method: .get).responseArray { [weak self] (response: DataResponse<[countrymodel]>) in

        print(response)
              switch response.result {
        case .success(let assignments):

            let realm = try! Realm()
            try! realm.write {
                realm.delete(realm.objects(countrymodel.self))
                realm.add(assignments, update: true)
            }
            for a in assignments{
                print(a)
            }

        case .failure(let error):
           print(".... . .. . .. . .")
        }

    }

这是我的模型类

import UIKit
import RealmSwift
import ObjectMapper

class countrymodel: Object, Mappable{

    enum Status: Int, CustomStringConvertible {
        case open, closed, cancelled
        var description : String {
            switch self {
            case .open: return "Open"
            case .closed: return "Closed"
            case .cancelled: return "Cancelled"
            }
        }
    }

    @objc dynamic var id = 0
    @objc dynamic var sortname = ""
    @objc dynamic var name = ""
    @objc dynamic var phonecode = ""
    override static func primaryKey() -> String? {
        return "id"
    }
    required convenience init?(map: Map) {
        self.init()
    }
    func mapping(map: Map) {
        id <- (map["id"])
        sortname <- map["sortname"]
        name <- map["name"]
        phonecode <- map["phonecode"]
    }
}

【问题讨论】:

    标签: swift model response


    【解决方案1】:

    你的响应不是一个数组而是一个字典,里面有一个名为result的数组,所以序列化失败,你可以做到

    Alamofire.request(geturl, method: .get).responseJSON
    

    并仅解析该数组

    【讨论】:

      【解决方案2】:

      您可以尝试以下代码: 更改此代码

      params).responseArray(completionHandler: { (response: DataResponse<[countrymodel]>) in
      

      像这样:

      params).responseObject {(response: DataResponse<countrymodel>) in
      

      【讨论】:

        猜你喜欢
        • 2017-01-27
        • 2021-05-25
        • 1970-01-01
        • 2012-09-20
        • 2017-08-13
        • 2014-05-30
        相关资源
        最近更新 更多