我正在开发一款应用,我需要使用我的API同步对象。我使用RestKit 0.20.3。
同步过程首先从服务器中提取对象,然后按下用户在应用程序内部修改的对象。 因此,在pull步骤中,我需要忽略已在本地修改的对象,因此不会使用服务器版本覆盖它们。
我将CoreData用于我的对象,并为本地修改的那些设置了一个布尔属性“modified”为YES。 因此,在同步期间进行GET后,我需要跳过具有“修改”属性的对象的映射步骤,但我无法确切地找到我应该如何做到这一点。
我到目前为止找到的唯一方法是直接在RKMappingOperation
内添加条件,但它很脏。
在RestKit中有没有更好的方法(并且不修改RestKit代码)?
答案 0 :(得分:6)
好吧,我一直在调查,我刚刚找到了解决方案。
实际上可以将自定义类注册为RKResponseMapperOperation
数据源:
[RKManagedObjectResponseMapperOperation registerMappingOperationDataSourceClass:[MyCustomDataSource class]];
MyCustomDataSource
应该实施RKMappingOperationDataSource
协议。
我继承自RKManagedObjectMappingOperationDataSource
,因为我通过核心数据使用托管对象。
@interface SUManagedObjectMappingOperationDataSource : RKManagedObjectMappingOperationDataSource
@end
在实现中,我只是重写了以下方法,将我的跳过逻辑添加到现有方法中:
- (BOOL)mappingOperationShouldSkipPropertyMapping:(RKMappingOperation *)mappingOperation