1

任何人都可以展示一些关于如何使用 AFPaginator 进行分页的示例。我正在使用 AFRestClient,我需要在我对实体的请求中关联 pagerId、offset 和 count 参数。

在我看来,通过使用 AFPaginator 关联这些参数应该是直截了当的。我搜索了一些示例,但找不到任何示例。

4

1 回答 1

0

我可以在分页方面取得一些进展,但还没有完成。

如果获取请求的 fetchLimit 和 fetchOffset 不等于 0,它将根据请求创建参数。

因此,在我的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 请求一个不同的页面,但是当我使用 aNSFetchedResultsController时,当我滚动 a 时,我无法让它请求另一个页面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请求所需的itens数。

这不是对您问题的直接答复,但我希望它可以帮助您找到答案并在此处发布:)

如果我发现更多东西,我会更新这个。

于 2013-08-09T20:06:19.627 回答