RestKit:如何删除核心数据条目以保持内容与服务器同步?

Posted

技术标签:

【中文标题】RestKit:如何删除核心数据条目以保持内容与服务器同步?【英文标题】:RestKit: how to remove core data entries to keep the content in sync with the server? 【发布时间】:2013-06-14 14:07:56 【问题描述】:

我正在使用 RestKit RKObjectManager 从我的服务器获取数据并存储在核心数据中(请参阅我的另一个 post)

我想配置数据库中遗留的旧条目的删除行为。

我看到 RKEntityMapping 类中有一个 deletePredicate 属性,但我知道它仅在服务实际返回标记为“待删除”的要删除的对象时使用。 (我说的对吗?)

在我的情况下,当某些对象必须被删除时,它们只是不被服务器返回,我想让我的客户端应用明白这意味着它应该删除它们。

这可能吗?如果有,怎么做?

编辑:

好的,我查看了that link,并将这个获取请求块添加到我的 RKObjectManager 中:

[[RKObjectManager sharedManager] addFetchRequestBlock:^NSFetchRequest *(NSURL *URL) 

    RKPathMatcher *pathMatcher = [RKPathMatcher pathMatcherWithPattern:@"/path_to_ressource"];

    NSDictionary *argsDict = nil;
    BOOL match = [pathMatcher matchesPath:[URL relativePath] tokenizeQueryStrings:NO parsedArguments:&argsDict];

    if (match) 

        NSFetchRequest *fetchRequest = [NSFetchRequest fetchRequestWithEntityName:@"Entity"];
        fetchRequest.sortDescriptors = @[ [NSSortDescriptor sortDescriptorWithKey:@"entityId" ascending:YES] ];
        return fetchRequest;
    

    return nil;
];

我保留了 sortDescriptor,但它的目的到底是什么?

【问题讨论】:

【参考方案1】:

您想查看“获取请求块和删除孤立对象”on this page 部分。它要求您使用RKObjectManager(您说您是)并描述了您告诉 RestKit 如何在数据存储中查找应该删除的内容的方式(它会检查而不是删除它只是从服务器接收)。

【讨论】:

我修改了问题,你能确认一下就这么简单吗?在这种情况下如何使用排序描述符? 不要将 / 添加到模式的开头(“/path_to_ressource”),因为这通常会导致它与您提出的请求不匹配。我不相信排序描述符是必需的(我从不使用)并且看不到它会提供什么好处。

以上是关于RestKit:如何删除核心数据条目以保持内容与服务器同步?的主要内容,如果未能解决你的问题,请参考以下文章

删除请求并将 RESTkit 与核心数据和线程同步

如何保持对象一对多 RestKit

Restkit 从核心数据中删除项目

在核心数据中删除数据库中的对象的策略。 [RestKit/核心数据]

RestKit、NSFetchedResultsController 和删除孤立对象

带有 Core Data 陡峭学习曲线的 RestKit 0.10.1