Нумерация страниц с AFIncrementalStore и AFRestClient
Может кто-нибудь показать пример того, как сделать нумерацию страниц с AFPaginator. Я использую AFRestClient, и мне нужно связать параметры pagerId, offset и count в моем запросе для объекта.
Мне кажется, что с помощью AFPaginator сопоставление этих параметров должно быть прямым. Я искал несколько примеров и не мог найти ни одного.
1 ответ
Я мог бы сделать некоторые успехи с нумерацией страниц, но не закончил.
Если в запросе на выборку fetchLimit и fetchOffset не равны нулю, он создаст параметры по запросу.
Итак, по моему AFRESTClient
подкласс, перед созданием запроса, по методу -requestForFetchRequest:withContext:
Я установил paginator как:
NSMutableDictionary *mutableParameters = [NSMutableDictionary dictionary];
self.paginator = [AFPageAndPerPagePaginator paginatorWithPageParameter:@"page" perPageParameter:@"per"];
[mutableParameters addEntriesFromDictionary:[self.paginator parametersForFetchRequest:fetchRequest]];
request = [self requestWithMethod:@"GET" path:@"feed" parameters:mutableParameters];
Это сгенерирует запрос на что-то вроде http://domain.com/feed?page=1&per=20
, Страница рассчитывается на основе fetchOffset
а также FetchLimit
как
NSUInteger perPage = fetchRequest.fetchLimit == 0 ? kAFPaginationDefaultPerPage : fetchRequest.fetchLimit;
NSUInteger page = fetchRequest.fetchOffset == 0 ? kAFPaginationDefaultPage : (NSUInteger)floorf((float)fetchRequest.fetchOffset / (float)perPage) + 1;
Итак, я мог бы сделать выборку попросить другую страницу, но, как я использую NSFetchedResultsController
Я не мог заставить его попросить другую страницу, когда я прокручиваю UITableView
, Я пытался сделать что-то как:
[NSFetchedResultsController deleteCacheWithName:[self.fetchedResultsController cacheName]];
self.fetchedResultsController.fetchRequest.fetchOffset = self.visibleChunk * self.chunkSize;
[_fetchedResultsController performSelectorOnMainThread:@selector(performFetch:) withObject:nil waitUntilDone:NO modes:@[ NSRunLoopCommonModes ]];
Вот, visibleChunk
следует использовать для переноса другой страницы, и chunkSize
количество желаемых итэнс одного запроса API.
Это не прямой ответ на ваш вопрос, но я надеюсь, что он поможет вам найти ответ и опубликовать здесь:)
Если я найду что-то еще, я обновлю это.