【问题标题】:RestKit 0.20.3 + Core Data - Skip mapping operationRestKit 0.20.3 + Core Data - 跳过映射操作
【发布时间】:2014-03-03 14:16:42
【问题描述】:

我正在开发一个应用程序,我需要将对象与我的 API 同步。我使用 RestKit 0.20.3。

同步过程首先从服务器拉取对象,然后将用户在应用程序内修改过的对象推送出去。 因此,在拉取步骤中,我需要忽略本地已修改的对象,因此它们不会被服务器版本覆盖。

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

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

在 RestKit 中是否有更好的方法来做到这一点(并且不修改 RestKit 代码)?

【问题讨论】:

    标签: ios macos cocoa core-data restkit


    【解决方案1】:

    好吧,我继续调查,我刚刚找到了解决方案。

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

    [RKManagedObjectResponseMapperOperation registerMappingOperationDataSourceClass:[MyCustomDataSource class]];
    

    MyCustomDataSource 应该实现RKMappingOperationDataSource 协议。 我的继承自 RKManagedObjectMappingOperationDataSource,因为我通过 Core Data 使用托管对象。

    @interface SUManagedObjectMappingOperationDataSource : RKManagedObjectMappingOperationDataSource
    @end
    

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

    - (BOOL)mappingOperationShouldSkipPropertyMapping:(RKMappingOperation *)mappingOperation
    

    【讨论】:

    • #import "MyCustomDataSource.h" #import "PRManagedObjectMappingOperationDataSource.h"
    猜你喜欢
    • 2013-08-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-20
    相关资源
    最近更新 更多