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 数组

Restkit 0.20 对象在获取 json 响应后未映射

使用 RestKit 0.20 映射时在 JSON 中向上遍历

Restkit 0.20 嵌套对象数组映射问题