如何向不在JSON中的RestKit Mapping添加其他属性

时间:2013-10-23 23:15:18

标签: ios core-data restkit

我已经将Restkit映射实现为包含'timestamp'属性的核心数据。我的本地数据模型支持使用JSON时间戳填充的'day','month'和'year'整数属性。我不知道在哪里以及如何做到这一点。

我的映射:

RKEntityMapping *mediaMapping = [[VSObjectStore shared] mappingForEntityForName:@"Media"];
    [mediaMapping setIdentificationAttributes:@[@"id"]];

    // Remove any relationships
    NSMutableArray *mediaMethods = [NSMutableArray arrayWithArray:[_VSMedia propertyNames]];
    [mediaMapping addAttributeMappingsFromArray:mediaMethods];

提前感谢您的帮助!

2 个答案:

答案 0 :(得分:1)

您应该实施RKObjectLoaderDelegate以下方法:

- (void)objectLoader:(RKObjectLoader*)loader willMapData:(inout id *)mappableData;

在解析数据之后但在映射之前调用此方法。因此,您可以修改数据以添加日,月和年。

代码看起来像这样:

- (void)objectLoader:(RKObjectLoader *)loader willMapData:(inout id *)mappableData
{
    NSMutableDictionary *mediaData = *mappableData;
    // parse timestamp here
    [mediaData setObject:day forKey:@"day"];

}

并将密钥添加到映射列表中:

NSMutableArray *mediaMethods = [NSMutableArray arrayWithArray:[_VSMedia propertyNames]];

[mediaMethods addObject:@"day"]



[mediaMapping addAttributeMappingsFromArray:mediaMethods];

答案 1 :(得分:1)

您应该更改数据模型(或至少是您的方法)。在您的模型中存储NSDate实例 - 这是最准确,最受支持的选择。然后映射应该自动发生。如果您仍然需要3天,月和年的属性,那么很好,但要将它们派生(瞬态)并在NSDate时间戳需要时(或获取/保存)获取它们。