首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用AFIncrementalStore和AFRestClient进行分页

使用AFIncrementalStore和AFRestClient进行分页
EN

Stack Overflow用户
提问于 2013-07-02 09:33:09
回答 1查看 438关注 0票数 1

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

在我看来,通过使用AFPaginator关联这些参数应该是直接的。我到处寻找一些例子,但没有找到任何例子。

EN

回答 1

Stack Overflow用户

发布于 2013-08-10 04:06:20

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

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

因此,在我的AFRESTClient子类上,在创建请求之前,在-requestForFetchRequest:withContext:方法上,我将分页器设置为:

代码语言:javascript
复制
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的请求。页面基于fetchOffsetFetchLimit计算为

代码语言:javascript
复制
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时,我不能让它请求另一个页面。我试着这样做:

代码语言:javascript
复制
[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数。

这不是对你的问题的直接回答,但我希望它能帮助你找到答案并发布在这里:)

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17416107

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档