如何让多个URL请求在AFIncrementalStore中获取单一类型的实体



假设我有一个使用AFIncrementalStore的核心数据模型,并且我有多个REST API端点用于检索该模型的对象列表。我可以覆盖AFHTTPClient中的-requestForFetchRequest:withContext:,如下所示:

- (NSURLRequest *)requestForFetchRequest:(NSFetchRequest *)fetchRequest
                         withContext:(NSManagedObjectContext *)context {
    NSMutableURLRequest *mutableURLRequest = nil;
    if ([fetchRequest.entityName isEqualToString:@"Post"]) {
        mutableURLRequest = [self requestWithMethod:@"GET" path:@"/posts/foo" parameters:nil];
    }
    return mutableURLRequest;
}

在这个片段中,我在/posts/foo检索Post对象,但我还需要从/posts/bar检索另一个集合。

我该怎么做?我看到的唯一解决方案是制作两个模型:一个用于foo,另一个用于bar,但重复自己是站不住脚的,而且可能还有更多的API端点为我获取我需要支持的Post对象。我还缺少其他方法吗?

您需要更仔细地检查fetchRequest,而不仅仅是查看entityName。根据您的数据模型,您还可以查看fetchRequest.propertiesToFetch或可能的其他内容。您仍然需要发送两个请求,所以只需确保您的AFNetworking子类能够区分。

另外:听起来你的requestForFetchRequest:withContext:方法可能会变得非常大。您可能需要考虑一种更通用的模式,在这种模式中,您可以获得NSManagedObject子类,并要求它返回一个获取请求。

相关内容

  • 没有找到相关文章

最新更新