RestKit / RKObjectMapping:如何在从服务器加载数据后添加其他属性?

时间:2014-03-25 07:51:39

标签: ios objective-c core-data restkit

我正在创建一个iOS应用程序,我在其中使用RestKit从Web服务器加载一些数据。

它基于MSCollectionViewCalendarLayout

我正在加载的数据具有以下结构(为简洁起见,仅显示了1个项目):

{ 
    "userID": "las404",
    "items": [{
        "id":"2000123",
        "startTime":"2013-09-05T12:00:00",
        "endTime":"2013-09-05T15:00:00",
        "title":"Title",
        "location":"Location",
        "description":"Description"
    }]  
}

这是我使用的AttributeMapping

RKEntityMapping *eventMapping = [[RKEntityMapping alloc] initWithEntity:entity];
    [eventMapping addAttributeMappingsFromArray:@[ @"title" ]];
    [eventMapping addAttributeMappingsFromDictionary:@{
            @"id" : @"id",
            @"startTime" : @"start",
            @"endTime" : @"end",
            @"location" : @"location",
            @"classID": @"classID"
}];

我想做的是为每个Core Data / SQLite记录添加2个属性;加载数据后weekuserID之前将其添加到本地数据库。

但我认为,如果我将其包含在每个项目(约200个)中,它将不必要地“膨胀”我的JSON响应。它可以做到吗?也许在[[RKObjectManager sharedManager] getObjectsAtPath...

在iOS / Obj-C开发方面我是一个完全新手所以任何帮助都将不胜感激。

(另外:我试过看RestKit documentation,但我恐怕大部分都不理解)

1 个答案:

答案 0 :(得分:0)

就像您不应该将数据重复添加到JSON中一样,您也不应该将其重复映射到目标对象中。您应该创建一个User实体,并将其与您的Item实体建立关系。

在这种情况下,您只有一个响应描述符,其映射包括另一个映射,以将嵌套数据处理为关系。

对于week实体的Item属性,这应该是在托管对象子类的willSave中更新的派生属性(或者用于派生属性更新的类似方法)