【问题标题】:RestKit Fetch Request Block (Deletion of orphaned objects)RestKit 获取请求块(删除孤立对象)
【发布时间】:2015-01-22 14:45:39
【问题描述】:

我正在使用restkit。我的coredata实体排列如screeshot

我添加了以下获取请求块来删除孤立对象

[objectManager addFetchRequestBlock:^NSFetchRequest *(NSURL *URL) {
 RKPathMatcher *pathMatcher = [RKPathMatcher pathMatcherWithPattern:@"/api/lists/:phone_no"];

    NSDictionary *argsDict = nil;
    BOOL match = [pathMatcher matchesPath:[URL relativePath] tokenizeQueryStrings:NO parsedArguments:&argsDict];
    NSString *phone_no;
    if (match)
    {
        phone_no = [argsDict objectForKey:@"phone_no"];
        NSFetchRequest *fetchRequest = [NSFetchRequest fetchRequestWithEntityName:@"List"];
        //we don't need request predicate here. We delete all local items which are not present in retruned response.

        return fetchRequest;
    }
    return nil;

 }];

它适用于孤立的 List 和 Task 对象。例如,如果某个列表的任务在服务器上被删除,那么在刷新时它也会从本地存储中消失,从而从表视图中消失。

但是,如果删除了它们的服务器对应项,则不会从本地存储中删除诸如“任务日志”、“任务注释”和“任务注释”之类的任务的子项。

例如,如果任务的任务注释从服务器中删除,那么在刷新数据时,“现在”孤立任务注释仍会显示在表中。

我正在使用这个 GET 描述符,它以适当的 JSON 格式返回所有相关数据

//Response Descriptor GET for List
RKResponseDescriptor *listResponseDescriptorGET = [RKResponseDescriptor responseDescriptorWithMapping:listEntityMapping
                                                                                               method:RKRequestMethodGET
                                                                                          pathPattern:@"/api/lists/:phone_no"
                                                                                              keyPath:nil
                                                                                          statusCodes:RKStatusCodeIndexSetForClass(RKStatusCodeClassSuccessful)];

我做错了什么?我在任何地方都使用获取结果控制器来自动更新视图。

如果需要,我可以提供更多信息。

【问题讨论】:

    标签: ios core-data restkit restkit-0.20


    【解决方案1】:

    你没有做错任何事情,但你的期望是错误的。

    如果删除列表时删除任务是因为 Core Data 删除规则,而不是因为 RestKit。 RestKit 只会在 store 中找到 List 对象来删除。

    您可以在 Core Data 中配置删除规则,以将删除从任务级联到其拥有的关系端点,但同样,这不是 RestKit 的直接部分。

    【讨论】:

      猜你喜欢
      • 2017-06-04
      • 1970-01-01
      • 1970-01-01
      • 2014-02-09
      • 1970-01-01
      • 2013-11-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多