有人能展示一些关于如何使用AFPaginator进行分页的示例吗。我正在使用AFRestClient,我需要在实体请求中关联pagerId、偏移量和计数参数。
在我看来,通过使用AFPaginator关联这些参数应该是直接的。我到处找了一些例子,但没有找到。
我可以在分页方面取得一些进展,但尚未完成。
如果fetch请求的fetchLimit和fetchOffset不等于零,它将在请求时创建参数。
因此,在我的AFRESTClient
子类上,在创建请求之前,在方法-requestForFetchRequest:withContext:
上,我将分页器设置为:
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;
所以,我可以让fetch请求不同的页面,但由于我使用的是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请求所需iten的数量。
这不是对你问题的直接回应,但我希望它能帮助你找到答案并发布在这里:)
如果我发现更多信息,我会更新此信息。