Załóżmy, że mam model Core Data z wykorzystaniem AFIncrementalStore
i mam wiele punktów końcowych API REST do pobierania listy obiektów tego modelu. Mogę zastąpić -requestForFetchRequest:withContext:
w AFHTTPClient
tak:Jak mogę mieć wiele żądań URL, aby pobrać pojedynczy typ obiektu w 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;
}
W tym fragmencie, odzyskać Post
obiektów w /posts/foo
, ale również trzeba pobrać inny zestaw z /posts/bar
.
Jak mogę to zrobić? Jedyne rozwiązanie, jakie widzę, to zrobić dwa modele: jeden dla foo
i jeden dla bar
, ale powtarzanie się jest lame, i może być o wiele więcej punktów końcowych API, które dostaną dla mnie Post
obiektów, które będę musiał obsługiwać. Czy istnieje inne podejście, którego mi brakuje?
Jak zdecydujesz, czy chcesz '/ posts/foo' lub'/posts/bar'? Na przykład, czy są to obiekty Post przez różnych użytkowników? Czy możesz sprawdzić 'fetchRequest', aby określić, czy aktualnie szukasz wpisów' foo' lub 'bar'? –
W moim przypadku interfejs API, z którym rozmawiam, ma ekran, na którym muszę wysyłać zarówno posty Foo, jak i słupkowe do listy w widoku pojedynczej tabeli. Mój model post ma właściwość wskazującą, który to typ, więc może mógłbym spojrzeć na 'fetchRequest.predicate.predicateFormat' i ustalić w ten sposób? – greenisus
Tak, to brzmi jak w twoim przypadku, musisz sprawdzić 'fetchRequest' bardziej uważnie niż patrząc na' entityName'. Możesz również spojrzeć na 'fetchRequest.propertiesToFetch' lub ewentualnie inne rzeczy w zależności od modelu danych. Nadal będziesz musiał wysłać dwie prośby, więc upewnij się, że może to odróżnić. –