我正在使用restkit。我的coredata实体的排列方式如screehot
所示我添加了以下获取请求块来删除孤立对象
[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)];
我做错了什么?我在任何地方使用fetch结果控制器自动更新视图。
如果需要,我可以提供更多信息。
答案 0 :(得分:3)
你没有做错任何事,但你的期望是错误的。
如果由于Core Data删除规则而删除列表时删除了任务,而不是因为RestKit。 RestKit只会在商店中找到要删除的List
个对象。
您可以在Core Data中配置删除规则,以将删除从任务级联到其拥有的关系端点,但同样,这不是RestKit的直接部分。