【发布时间】: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