1

누구나 AFPaginator로 페이지 매김을 수행하는 방법에 대한 샘플을 보여줄 수 있습니까? AFRestClient를 사용하고 있는데 엔티티 요청에 pagerId, offset 및 count 매개 변수를 연결해야합니다.AFIncrementalStore 및 AFRestClient로 페이지 매기기

AFPaginator를 사용하면 이러한 매개 변수를 연결하는 것이 곧바로 진행될 것입니다. 나는 몇 가지 예를 찾아 보았고 어떤 것도 찾을 수 없었다.

답변

0

페이지 매김을 통해 약간의 진전이 있었지만 완료되지는 않았습니다.

가져 오기 요청에 fetchLimit 및 fetchOffset이 0이 아니면 요청시 매개 변수가 생성됩니다. 이 http://domain.com/feed?page=1&per=20 같은 요청을 생성합니다

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]; 

:

그래서, 내 AFRESTClient 서브 클래스에서, 방법 -requestForFetchRequest:withContext:에 요청을 만들기 전에 나는대로 매기기를 설정합니다. 이 페이지는 그래서, 나는 다른 페이지를 요청 가져올 만들 수

NSUInteger perPage = fetchRequest.fetchLimit == 0 ? kAFPaginationDefaultPerPage : fetchRequest.fetchLimit; 
NSUInteger page = fetchRequest.fetchOffset == 0 ? kAFPaginationDefaultPage : (NSUInteger)floorf((float)fetchRequest.fetchOffset/(float)perPage) + 1; 

fetchOffsetFetchLimit 기준으로 계산됩니다,하지만 난 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 원하는 itens 하나 개의 API 요청의 수입니다.

이 질문에 대한 응답을 지시하지 않습니다,하지만 난 당신이 답을 찾을 여기에 게시 : 좀 더 뭔가를 발견하면, 나는이 업데이트

도울 수 있기를 바랍니다.

+0

감사의 말을 전하면서 ​​고맙습니다. – jaishankar

+0

나는 그것을 효과가있게 만들었다. 하지만 NSFetchedResultsController에서는 작동하지 않습니다. NSFetchRequest를 사용하면'fetchOffset'을'fetchLimit'의 배수로 설정하면됩니다. 따라서 페이지 당 10 개의 항목에 대해 페이지 2를 가져오고 싶다면'fetchOffset'을 20으로 설정하고 변경된 NSFetchRequest 객체로 새로운 페치를 실행하면 완료됩니다. –