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

时间:2013-07-13 00:42:36

标签: afnetworking afincrementalstore

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

- (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;
}

在此代码段中,我在Post处检索/posts/foo个对象,但我还需要从/posts/bar检索另一个对象。

我该怎么做?我看到的唯一解决方案是创建两个模型:一个用于foo,一个用于bar,但重复自己是蹩脚的,并且可能有更多的API端点可以获得Post个对象我,我需要支持。还有其他方法我不知道吗?

1 个答案:

答案 0 :(得分:2)

您需要更加密切地检查fetchRequest,而不仅仅是entityName。您还可以查看fetchRequest.propertiesToFetch或其他可能的内容,具体取决于您的数据模型。您仍然需要发送两个请求,因此请确保您的AFNetworking子类可以区分它们。

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