1

这里非常令人困惑,向开发中的项目添加各种请求。到目前为止,对于两个对象都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 中的键路径对于前两个有效的查询是 nil。当 keypath 为 nil 并forResourcePathPattern用于设置对象映射时,objectLoader:(RKObjectLoader *)objectLoader didLoadObjects:(NSArray *)objects(RKObjectLoaderDelegate方法) 接收到具有正确映射的有效对象。当 keypath 不是 nil 时, usingforResourcePathPattern总是发送didLoadObjects:一个 nil 对象。

使用

[[RKObjectManager sharedManager].mappingProvider setObjectMapping:duckMapping
                                           forResourcePathPattern:kResourcePathDuckPond];

失败。使用

[[RKObjectManager sharedManager].mappingProvider setObjectMapping:duckMapping
                                                       forKeyPath:@"ponds"];

(其中“ponds”是返回的 JSON 中给出的键路径)工作正常。

这是规则吗,forResourcePathPattern除非 keypath 为 nil,否则会失败?我想让我所有的对象都以同样的方式被识别。虽然我可以让它工作,但我不喜欢为一个查询使用关键路径,为其他查询使用资源路径。我想使用forResourcePathPattern一切,因为我无法控制 API,有些查询返回一个 keypath,而有些则没有。

4

0 回答 0