假设我有一个使用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
个对象我,我需要支持。还有其他方法我不知道吗?
答案 0 :(得分:2)
您需要更加密切地检查fetchRequest
,而不仅仅是entityName
。您还可以查看fetchRequest.propertiesToFetch
或其他可能的内容,具体取决于您的数据模型。您仍然需要发送两个请求,因此请确保您的AFNetworking子类可以区分它们。
另外:听起来你的requestForFetchRequest:withContext:
方法可能会变得非常大。您可能需要考虑一种更通用的模式,在该模式中,您获得NSManagedObject
子类,并要求返回获取请求。