2013-07-13 20 views
5

假設我有一個使用AFIncrementalStore的核心數據模型,並且我有多個REST API端點用於檢索該模型的對象列表。我可以在AFHTTPClient覆蓋-requestForFetchRequest:withContext:像這樣:如何獲取多個URL請求以獲取AFIncrementalStore中的單個類型的實體?

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

你如何決定你想要'/ posts/foo'還是'/ posts/bar'?例如,是不同用戶的那些Post對象?你可以檢查'fetchRequest'來確定你目前是在尋找'foo'還是'bar'文章? –

+0

在我的情況下,我所說的API有一個屏幕,我需要請求Foo和Bar Posts列出一個表格視圖。我的博文模型確實有一個屬性,表明它是哪種類型,所以也許我可以看看'fetchRequest.predicate.predicateFormat'並確定這種方式? – greenisus

+0

是的,這聽起來就像你的情況,你需要檢查'fetchRequest'而不是隻看'entityName'。您也可以查看'fetchRequest.propertiesToFetch'或其他可能的事情,具體取決於您的數據模型。你仍然需要發送兩個請求,所以只要確定它可以區分不同。 –

回答

2

您需要更仔細地檢查fetchRequest,而不僅僅是查看entityName。根據您的數據模型,您還可以查看fetchRequest.propertiesToFetch或其他可能的東西。你仍然需要發送兩個請求,所以只要確保你的AFNetworking子類可以區分它們。

另外:它聽起來像你的requestForFetchRequest:withContext:方法可能會變得非常大。您可能需要考慮一個更通用的模式,在該模式中獲取您的NSManagedObject子類,並要求返回一個獲取請求。

相關問題