我在使用2个实体的应用中使用RestKit 0.20.0rc1:
我有以下2个响应描述符(等等):
// GET /sets/:setID/notes
// Get a set's notes. Response looks like this:
// {"notes": [ (array of NoteClass dictionaries) ],
// ...more stuff...
// }
RKResponseDescriptor *noteResponseDescriptor = [RKResponseDescriptor responseDescriptorWithMapping:[NoteClass rkEntityMapping]
pathPattern:@"/sets/:setID/notes"
keyPath:@"notes"
statusCodes:RKStatusCodeIndexSetForClass(RKStatusCodeClassSuccessful)];
[objectManager addResponseDescriptor:noteResponseDescriptor];
// GET /sets/:setID
// Get information about a set. Response looks like this:
// {"name": "My Set",
// "numNotes": 3,
// ...more stuff...
// }
RKResponseDescriptor *setResponseDescriptor = [RKResponseDescriptor responseDescriptorWithMapping:[SetClass rkEntityMapping]
pathPattern:@"/sets/:setID"
keyPath:nil
statusCodes:RKStatusCodeIndexSetForClass(RKStatusCodeClassSuccessful)];
[objectManager addResponseDescriptor:setResponseDescriptor];
当我请求“/ sets /:setID / notes”时,noteResponseDescriptor匹配(预期)。但是,setResponseDescriptor也匹配(意外)。我相信这是因为响应描述符的路径模式匹配子串“/ sets /:setID”,因为键路径是nil。因此,当我发出请求时,我得到的RKMappingResult包含一个NoteClass对象数组(预期)和一个空的SetClass对象(意外)。
如何阻止setResponseDescriptor匹配此笔记端点?我无法添加一个到setResponseDescriptor的键路径(所以),所以我的首选是一个允许我说“match / sets /:setID $”的解决方案,其中“$”表示URL的结尾。
答案 0 :(得分:1)
原来现在有办法阻止你的例子多次匹配(参见讨论here)。
虽然解决方案正在进行中,但您可以通过以下几种方法解决此问题:
尽管每种解决方案都有其自身的缺陷。