我在一个快速的项目中使用RestKit。
在我的RKObjectManager
我正在设置以下RKResponseDescriptor
:
var responseDescriptor = RKResponseDescriptor(
mapping: PPAMappingProvider.responseMapping,
method: RKRequestMethod.Any,
pathPattern: nil,
keyPath: "meta",
statusCodes: nil)
self.addResponseDescriptor(responseDescriptor)
基本上,我的所有API请求都返回一个meta
对象。我有其他映射来匹配result
,一切正常。
当POST / PUT成功(状态代码200)时,我的API会返回如下内容:
{"meta":{"msg":"Success","ts":1417004530608},
"result":{"_id":"H7mLYJc","user_id":1000,...}}
如果不成功(状态代码404),则返回例如:
{"meta":{"msg":"Item not found.","ts":1417004403903}}
根据documentation,当我设置statusCodes: nil
时,映射应该适用于所有状态代码,甚至是404.问题是它没有,我必须添加代码:
responseDescriptor = RKResponseDescriptor(
mapping: PPAMappingProvider.responseMapping,
method: RKRequestMethod.Any,
pathPattern: nil,
keyPath: "meta",
statusCodes: RKStatusCodeIndexSetForClass(UInt(RKStatusCodeClassClientError)))
self.addResponseDescriptor(responseDescriptor)
(请注意statusCodes
参数)如果我希望此映射适用于404响应。顺便说一下,我正在使用RKManagedObjectRequestOperation
这些映射,但这不重要吗?
当服务器返回状态代码200时,这些映射工作完美。
这不是什么大不了的事,因为我开始工作了。我只是想知道我做错了什么,或者这是一个发送到RestKit的错误?