5

假设我有一个使用 的 Core Data 模型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

我怎样才能做到这一点?我看到的唯一解决方案是制作两个模型:一个 forfoo和一个 for bar,但重复自己是蹩脚的,并且可能有更多 API 端点Post为我获取需要支持的对象。我还缺少其他方法吗?

4

1 回答 1

2

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

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

于 2013-07-17T22:24:42.353 回答