【发布时间】:2016-01-07 21:13:32
【问题描述】:
我在使用 RestKit 时遇到问题。
我有一个端点items/,我可以在其中GET 一组项目。这是一个示例返回:
[
{ item_id: 1 },
{ item_id: 2 },
{ item_id: 3 }
]
我还可以执行items/<item_id> 之类的操作来只获得一件物品。例如,如果我 GET items/2 我会得到这个:
{ item_id: 2 }
我是这样映射的:
let itemsResponseMapping: RKObjectMapping = RKObjectMapping(withClass: MyItem.self)
itemsResponseMapping.addAttributeMappingsFromDictionary(["item_id" : "itemId"])
let responseDescriptor = RKResponseDescriptor(
mapping: itemsResponseMapping,
method: RKRequestMethod.GET,
pathPattern: "items",
keyPath: nil,
statusCodes: RKStatusCodeIndexSetForClass(RKStatusCodeClass.Successful)
)
objectManager.addResponseDescriptor(responseDescriptor);
所以,要请求我会这样做:
RKObjectManager.sharedManager().getObjectsAtPath(
ENDPOINT,
parameters: nil,
success: {(operation: RKObjectRequestOperation!, mapping: RKMappingResult!) -> Void in
//whatever
},
failure: {(operation: RKObjectRequestOperation!, error: NSError!) -> Void in
//whatever
}
当 ENDPOINT 为“items”时,它会成功。但是当 ENDPOINT 是“items/2”时,我会得到一个No response descriptors match the response loaded。如果我检查operation.HTTPRequestOperation.responseString,那么我看到获取成功,但问题是它没有映射它。
我在这里错过了什么??
编辑:我应该补充一点,我不拥有后端,并且应该在 iOS 中完成修复。
【问题讨论】: