ios – ObjectMapper无法序列化响应错误Code = 2
发布时间:2020-12-14 17:20:08 所属栏目:百科 来源:网络整理
导读:我在使用Alamofire Object mapper命中Alamofire时遇到错误 这就是我如何击中API- APIService.shared.getSlots{ (success,weekSlots,error) in if success { self.weekSlots = weekSlots! print("success!!") } else { print(error?.errorMessage ?? "NOPE")
我在使用Alamofire Object mapper命中Alamofire时遇到错误
这就是我如何击中API- APIService.shared.getSlots{ (success,weekSlots,error) in if success { self.weekSlots = weekSlots! print("success!!") } else { print(error?.errorMessage ?? "NOPE") } } 而APIService类中的getSlot函数是 – open func getSlots(completion: @escaping (Bool,[WeekSlot]?,APIError?) -> ()) { sessionManager.request(APIRouter.getSlots()) .validate(statusCode: 200..<300) .responseArray(queue: nil,keyPath: "week_slots",context: nil) { (response: DataResponse<[WeekSlot]>) in switch response.result { case .success(let value): self.saveArraysToRealm(value: value) completion(true,value,nil) case .failure: let error = self.processFailure(json: JSON(response.data as Any)) completion(false,nil,error) print(error) } } } 这是我的数据模型: import Foundation import ObjectMapper import RealmSwift class WeekSlot: Object,Mappable { dynamic var date : String? = "" var slot = List<Slots>() //Impl. of Mappable protocol required convenience init?(map: Map) { self.init() } func mapping(map: Map) { date <- map["date"] slot <- (map["slots"],ArrayTransform<Slots>()) } } 我已经声明了执行get请求的请求,并且url也是正确的.除了由sessionManager处理的auth令牌之外,API不接受任何参数.但是,我在调试时得到以下错误响应 – [Request]: GET http://beta.xamidea.in/api/v1/teachers/get_slots/ [Response]: <NSHTTPURLResponse: 0x600000434c80> { URL: http://beta.xamidea.in/api/v1/teachers/get_slots/ } { status code: 200,headers { Allow = "GET,POST,HEAD,OPTIONS"; Connection = "keep-alive"; "Content-Length" = 477; "Content-Type" = "application/json"; Date = "Tue,10 Oct 2017 11:01:53 GMT"; Server = "nginx/1.10.3 (Ubuntu)"; Vary = Accept; "X-Frame-Options" = SAMEORIGIN; } } [Data]: 477 bytes [Result]: FAILURE: Error Domain=com.alamofireobjectmapper.error Code=2 "ObjectMapper failed to serialize response." UserInfo=. {NSLocalizedFailureReason=ObjectMapper failed to serialize response.} [Timeline]: Timeline: { "Request Start Time": 529326113.851,"Initial Response Time": 529326113.985,"Request Completed Time": 529326113.986,"Serialization Completed Time": 529326113.987,"Latency": 0.134 secs,"Request Duration": 0.135 secs,"Serialization Duration": 0.001 secs,"Total Duration": 0.136 secs } ? request : Optional<URLRequest> ? some : http://beta.xamidea.in/api/v1/teachers/get_slots/ ? url : Optional<URL> ? some : http://beta.xamidea.in/api/v1/teachers/get_slots/ - cachePolicy : 0 - timeoutInterval : 60.0 - mainDocumentURL : nil - networkServiceType : __ObjC.NSURLRequest.NetworkServiceType - allowsCellularAccess : true ? httpMethod : Optional<String> - some : "GET" ? allHTTPHeaderFields : Optional<Dictionary<String,String>> ? some : 1 element ? 0 : 2 elements - key : "Authorization" - value : "Token 4d7ebe501bcd7c910cf1950ab53bc8aa2a4a569d" - httpBody : nil - httpBodyStream : nil - httpShouldHandleCookies : true - httpShouldUsePipelining : false ? response : Optional<NSHTTPURLResponse> ? data : Optional<Data> ? some : 477 bytes - count : 477 ? pointer : 0x00007f896a48aa80 - pointerValue : 140228170394240 ? result : FAILURE: Error Domain=com.alamofireobjectmapper.error Code=2 "ObjectMapper failed to serialize response." UserInfo= {NSLocalizedFailureReason=ObjectMapper failed to serialize response.} ? timeline : Timeline: { "Request Start Time": 529326113.851,"Initial Response Time": 529326113.985,"Total Duration": 0.136 secs } - requestStartTime : 529326113.85062999 - initialResponseTime : 529326113.98505801 - requestCompletedTime : 529326113.98612601 - serializationCompletedTime : 529326113.986781 - latency : 0.13442802429199219 - requestDuration : 0.13549602031707764 - serializationDuration : 0.00065499544143676758 - totalDuration : 0.1361510157585144 ? _metrics : Optional<AnyObject> 这个错误意味着什么? API对成功的回应是 – { "result": { "week_slots": [ { "date": "2017-10-10","slots": [] },{ "date": "2017-10-11","slots": [ { "start": "2017-10-11T20:00:00Z","end": "2017-10-11T21:00:00Z","availability": true,"booked": false },{ "start": "2017-10-11T10:00:00Z","end": "2017-10-11T12:00:00Z","booked": false } ] },{ "date": "2017-10-12",{ "date": "2017-10-13",{ "date": "2017-10-14",{ "date": "2017-10-15",{ "date": "2017-10-16","slots": [] } ] },"success": true,"error": {} } 解决方法
尝试将模型类更改为:
class WeekSlot: Object,Mappable { dynamic var date : String? = "" var slot: [Slots] = [] //Impl. of Mappable protocol required convenience init?(map: Map) { self.init() } func mapping(map: Map) { date <- map["date"] slot <- map["slots"] } } 还要检查你的插槽型号 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- 使用SAX读取XML文件--(将信息封装到对象)
- c# – .NET Selenium NoSuchElementException; WebDriverWa
- Unity 3d SQLite Database connection
- 单元测试 – 可以使用哪些技术使编写测试更有趣?
- flex – 如何使用ActionScript在给定限制内生成随机数?
- C中需要什么才能始终使用引用而不是指针?
- query getJson 读取数据
- Xcode 8属性“hidden”不会隐藏Interface Builder中的视图
- 我可以撤销还是删除atexit命令?
- Cocos2d-x 3.2 大富翁游戏项目开发-第九部分 代码部分优化