这里非常令人困惑的时候在开发项目中添加各种请求。对于目前为止的两个对象setObjectMapping:forResourcePathPattern:
工作正常。这些资源模式包括@"customer/login/"
和@"customer/getDuckStatus/"
。无法创建具有正确映射的对象的查询是@"customer/getPondsForDuck/"
// this define is used for object mapping and for creating the query,
// it can't be a mismatch
#define kResourcePathDuckPond @"customer/getPondsForDuck/"
我在查询中看到的唯一区别是返回的JSON中的keypath对于前两个有效的查询是nil。当keypath为nil并且forResourcePathPattern
用于设置对象映射时,objectLoader:(RKObjectLoader *)objectLoader didLoadObjects:(NSArray *)objects
(RKObjectLoaderDelegate
方法)接收具有正确映射的有效对象。当keypath为非nil时,使用forResourcePathPattern
总是发送didLoadObjects:
一个nil对象。
使用
[[RKObjectManager sharedManager].mappingProvider setObjectMapping:duckMapping
forResourcePathPattern:kResourcePathDuckPond];
失败。使用
[[RKObjectManager sharedManager].mappingProvider setObjectMapping:duckMapping
forKeyPath:@"ponds"];
(其中“ponds”是返回的JSON中给出的keypath)工作正常。
这是规则,forResourcePathPattern
会失败,除非keypath为零吗?我想以同样的方式识别我的所有物体。虽然我可以使它工作,但我不喜欢使用一个查询的密钥路径和其他人的资源路径。我想将forResourcePathPattern
用于所有内容,因为我无法控制API,而有些查询会返回一个keypath,而有些查询则没有。