RestKit/RKObjectMapping:从服务器加载数据后如何添加其他属性?
Posted
技术标签:
【中文标题】RestKit/RKObjectMapping:从服务器加载数据后如何添加其他属性?【英文标题】:RestKit/RKObjectMapping: How do I add additional properties after data has been loaded from server? 【发布时间】:2014-03-25 07:51:38 【问题描述】:我正在创建一个 ios 应用,我在其中使用 RestKit 从 Web 服务器加载一些数据。
它基于MSCollectionViewCalendarLayout。
我正在加载的数据具有以下结构(为简洁起见,仅显示一项):
"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,但恐怕我大部分都看不懂)
【问题讨论】:
周是从开始/结束时间计算的? 【参考方案1】:就像您不应该重复地将数据添加到您的 JSON 中一样,您也不应该重复地将其映射到您的目标对象中。您应该创建一个User
实体并赋予它与您的Item
实体的关系。
在这种情况下,您只有一个响应描述符,其映射包含另一个映射,用于将嵌套数据处理到关系中。
对于Item
实体的week
属性,这应该是在托管对象子类的willSave
中更新的派生属性(或派生属性更新的类似方法)。
【讨论】:
以上是关于RestKit/RKObjectMapping:从服务器加载数据后如何添加其他属性?的主要内容,如果未能解决你的问题,请参考以下文章
RestKit RKObjectMapping Swift 可选
RestKit RKObjectMapping 嵌套 json
RestKit RKObjectMapping .. 嵌套和一次性对象