Restkit 0.20 JSON 映射以及额外的离线数据
Posted
技术标签:
【中文标题】Restkit 0.20 JSON 映射以及额外的离线数据【英文标题】:Restkit 0.20 JSON Mapping along with additional offline data 【发布时间】:2014-01-27 18:33:24 【问题描述】:假设我有一个这样的 JSON 对象:
"userList" : [
"ID" : 1,
"firstName" : "John",
"lastName" : "Doe"
,
"ID" : 2,
"firstName" : "Jane",
"lastName" : "Doe"
]
我可以将此对象映射到我的 user
类中,该类具有以下属性:
ID,
firstName,
lastName,
createdDate,
modifiedData
当我需要更新 modified date
时出现问题
所以我的问题是,如何将 JSON 对象映射到 Core Data,同时插入一些 JSON 对象中不存在的数据。这甚至可能吗?
=================
我的映射函数,如果有帮助的话:
+ (RKObjectMapping *)mapping
// Create a singleton instance of the mapping object.
__strong static RKEntityMapping *_mapping = nil;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^
RKManagedObjectStore *store = [[RKObjectManager sharedManager] managedObjectStore];
_mapping = [RKEntityMapping mappingForEntityForName:NSStringFromClass([self class]) inManagedObjectStore:store];
// Map attributes with the same name in the JSON and the model.
[_mapping addAttributeMappingsFromDictionary:@@"ID": @"ID",
@"firstName" : @"firstName",
@"lastName" : @"lastName"];
// Set primaryKeyAttribute
_mapping.identificationAttributes = @[@"ID"];
);
return _mapping;
【问题讨论】:
【参考方案1】:在 RestKit 外部处理此问题,但以由 RestKit 触发的方式(以及任何其他更改):
在您的托管对象子类上覆盖willSave
,并在调用时更新修改日期(设置原始值以避免递归)。
【讨论】:
- willSave
导致一些脏上下文。根据 Paul Lange (***.com/questions/4874193/core-data-willsave-method) 的这个 SO 回答,我应该重写 load
方法并使用 NSNotification
。但是感谢@Wain,你帮助我从哪里开始寻找。
这是一个非常好的通用解决方案,我喜欢它。以上是关于Restkit 0.20 JSON 映射以及额外的离线数据的主要内容,如果未能解决你的问题,请参考以下文章
RestKit 0.20 映射问题(使用来自 API 的 JSON)
使用 RESTKIT 0.20 映射未命名值的 JSON 数组
Restkit 0.20 对象在获取 json 响应后未映射