将映射关系映射到数组索引

我想将给定的数组索引映射到RestKit(OM2)的属性。 我有这个JSON:

{
  "id": "foo",
  "position": [52.63, 11.37]
}

我想映射到这个对象:

@interface NOSearchResult : NSObject
@property(retain) NSString* place_id;
@property(retain) NSNumber* latitude;
@property(retain) NSNumber* longitude;
@end

我无法弄清楚如何将值从我的JSON中的位置数组映射到我的objective-c类的属性中。 映射看起来像这样到目前为止:

RKObjectMapping* resultMapping = [RKObjectMapping mappingForClass:[NOSearchResult class]];
[resultMapping mapKeyPath:@"id" toAttribute:@"place_id"];

现在我怎样才能添加纬度/经度的映射? 我尝试了各种各样的东西,但都不起作用。 例如:

[resultMapping mapKeyPath:@"position[0]" toAttribute:@"latitude"];
[resultMapping mapKeyPath:@"position.1" toAttribute:@"longitude"];

有没有办法将position[0]从JSON映射到我的对象的latitude


简短的答案是否定的 - 键值编码不允许这样做。 对于收集,只支持汇总操作,如max,min,avg,sum。

你最好的选择可能是添加一个NSArray属性到NOSearchResult:

// NOSearchResult definition
@interface NOSearchResult : NSObject
@property(retain) NSString* place_id;
@property(retain) NSString* latitude;
@property(retain) NSNumber* longitude;
@property(retain) NSArray* coordinates;
@end

@implementation NOSearchResult
@synthesize place_id, latitude, longitude, coordinates;
@end

并像这样定义映射:

RKObjectMapping* resultMapping = [RKObjectMapping mappingForClass:[NOSearchResult class]];
[resultMapping mapKeyPath:@"id" toAttribute:@"place_id"];
[resultMapping mapKeyPath:@"position" toAttribute:@"coordinates"];

之后,您可以从坐标手动分配经度和纬度。

编辑:做纬度/经度分配的好地方可能是在对象加载器代理中

- (void)objectLoader:(RKObjectLoader*)objectLoader didLoadObject:(id)object;

- (void)objectLoader:(RKObjectLoader*)objectLoader didLoadObjects:(NSArray*)objects;
链接地址: http://www.djcxy.com/p/8669.html

上一篇: RestKit mapKeyPath to Array index

下一篇: Why do different headers have the same name?