Нумерация страниц с 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.

Это не прямой ответ на ваш вопрос, но я надеюсь, что он поможет вам найти ответ и опубликовать здесь:)

Если я найду что-то еще, я обновлю это.

Другие вопросы по тегам