0

我已经实现了一个到包含“时间戳”属性的核心数据的 Restkit 映射。我的本地数据模型支持我需要使用 JSON 中的时间戳填充的“日”、“月”和“年”整数属性。我不确定在哪里以及如何做到这一点。

我的映射:

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

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

在此先感谢您的帮助!

4

2 回答 2

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];
于 2013-10-24T06:26:03.670 回答
1

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

于 2013-10-24T11:50:18.317 回答