Restkit:将数组映射到对象

Posted

技术标签:

【中文标题】Restkit:将数组映射到对象【英文标题】:Restkit: Mapping an array to object 【发布时间】:2014-10-09 09:28:48 【问题描述】:

我的 JSON 如下所示:

[ [value1, value2, value3], [value1, value2, value3]]

我想遍历外部数组,并将每个内部数组映射到一个对象,例如:

@interface MyObject : NSObject
    @property (nonatomic, copy) NSString* key1;
    @property (nonatomic, copy) NSString* key2;
    @property (nonatomic, copy) NSString* key3;
@end

对于示例 JSON,我应该得到两个映射对象,例如MyObject1,MyObject2,其中 MyObject1 映射到第一个内部数组,MyObject2 映射到第二个内部数组。每个都将其属性映射到数组中的相应值,即 key1 == value1、key2==value2 和 key3==value3。

有什么想法可以做这样的映射吗?

【问题讨论】:

我不确定你在问什么。您想将这些值数组存储到数组中吗?所以你每次都会有 Array1Array2 等包含 3 个字符串? 你能提供一个你的 json 样本吗? 修改了我的问题。如果还不清楚,请告诉我。 【参考方案1】:

我最终处理它的方式是向我的对象添加一个数组属性,并将整个数组映射到该属性(NSManagedObject 子类的可转换属性)

RKEntityMapping *responseMapping = [RKEntityMapping mappingForEntityForName:@"MyObject" inManagedObjectStore:managedObjectStore];

[responseMapping addPropertyMapping:[RKAttributeMapping attributeMappingFromKeyPath:nil toKeyPath:@"values"]];

映射完成后,我在完成块中分配其余的值:

^(RKObjectRequestOperation *operation, RKMappingResult *mappingResult) 
        [mappingResult.array enumerateObjectsUsingBlock:^(MyObject *obj, NSUInteger idx, BOOL *stop) 
            obj.key1 = obj.values[0];
            obj.key2 = obj.values[1];
            obj.key3 = obj.values[2];
        ];

【讨论】:

以上是关于Restkit:将数组映射到对象的主要内容,如果未能解决你的问题,请参考以下文章

RestKit:将嵌套数组映射到对象

RestKit - 将数组的键路径映射到该数组内的对象

使用 RestKit 将 JSON“关联数组”映射到 CoreData

iOS RestKit 实体管理器映射对象数组

Restkit 0.20 嵌套对象数组映射问题

RestKit mapKeyPath 到数组索引