RestKit 0.20.3 +核心数据 - 跳过映射操作

时间:2014-03-03 14:16:42

标签: ios macos cocoa core-data restkit

我正在开发一款应用,我需要使用我的API同步对象。我使用RestKit 0.20.3。

同步过程首先从服务器中提取对象,然后按下用户在应用程序内部修改的对象。 因此,在pull步骤中,我需要忽略已在本地修改的对象,因此不会使用服务器版本覆盖它们。

我将CoreData用于我的对象,并为本地修改的那些设置了一个布尔属性“modified”为YES。 因此,在同步期间进行GET后,我需要跳过具有“修改”属性的对象的映射步骤,但我无法确切地找到我应该如何做到这一点。

我到目前为止找到的唯一方法是直接在RKMappingOperation内添加条件,但它很脏。

在RestKit中有没有更好的方法(并且不修改RestKit代码)?

1 个答案:

答案 0 :(得分:6)

好吧,我一直在调查,我刚刚找到了解决方案。

实际上可以将自定义类注册为RKResponseMapperOperation数据源:

[RKManagedObjectResponseMapperOperation registerMappingOperationDataSourceClass:[MyCustomDataSource class]];

MyCustomDataSource应该实施RKMappingOperationDataSource协议。 我继承自RKManagedObjectMappingOperationDataSource,因为我通过核心数据使用托管对象。

@interface SUManagedObjectMappingOperationDataSource : RKManagedObjectMappingOperationDataSource
@end

在实现中,我只是重写了以下方法,将我的跳过逻辑添加到现有方法中:

- (BOOL)mappingOperationShouldSkipPropertyMapping:(RKMappingOperation *)mappingOperation