我正在创建一个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个属性;加载数据后week
和userID
,之前将其添加到本地数据库。
但我认为,如果我将其包含在每个项目(约200个)中,它将不必要地“膨胀”我的JSON响应。它可以做到吗?也许在[[RKObjectManager sharedManager] getObjectsAtPath...
?
在iOS / Obj-C开发方面我是一个完全新手所以任何帮助都将不胜感激。
(另外:我试过看RestKit documentation,但我恐怕大部分都不理解)
答案 0 :(得分:0)
就像您不应该将数据重复添加到JSON中一样,您也不应该将其重复映射到目标对象中。您应该创建一个User
实体,并将其与您的Item
实体建立关系。
在这种情况下,您只有一个响应描述符,其映射包括另一个映射,以将嵌套数据处理为关系。
对于week
实体的Item
属性,这应该是在托管对象子类的willSave
中更新的派生属性(或者用于派生属性更新的类似方法)