ios - RestKit Pagination -


i'm stuck pagination issue.

when go /?pagesize=:perpage&page=:page" json response this:

api json response

which map using following paginator:

/* bbactivitypaginator */

rkobjectmapping *activitypaginationmapping = [rkobjectmapping mappingforclass:[bbactivitypaginator class]]; [activitypaginationmapping addattributemappingsfromdictionary:@{  @"page" :@"currentpage",  @"pagesize" :@"perpage",  @"totalresultcount" :@"objectcount"  }]; [activitypaginationmapping addpropertymapping:[rkrelationshipmapping relationshipmappingfromkeypath:@"pagedlistitems" tokeypath:@"activities" withmapping:activitymapping]]; [manager addresponsedescriptor:[rkresponsedescriptor responsedescriptorwithmapping:activitypaginationmapping                                                                        pathpattern:@"/?pagesize=:perpage&page=:page"                                                                            keypath:@"model.activities"                                                                        statuscodes:rkstatuscodeindexsetforclass(rkstatuscodeclasssuccessful)]]; 

which related mapping:

/* bbactivity */

rkobjectmapping *activitymapping = [rkobjectmapping mappingforclass:[bbactivity class]]; [activitymapping addattributemappingsfromdictionary:@{     @"id" :@"identifier",     @"createddatetime" :@"createdon",     @"description" :@"description",     @"createddatetimeorder" :@"order",     @"type" :@"type",     @"deletedactivityitem.message" :@"deleted"  }]; [activitymapping addpropertymapping:[rkrelationshipmapping relationshipmappingfromkeypath:@"user" tokeypath:@"user" withmapping:usermapping]]; [activitymapping addpropertymapping:[rkrelationshipmapping relationshipmappingfromkeypath:@"observationadded.observation" tokeypath:@"observation" withmapping:observationmapping]]; [activitymapping addpropertymapping:[rkrelationshipmapping relationshipmappingfromkeypath:@"sightingnoteadded.sightingnote" tokeypath:@"observationnote" withmapping:observationnotemapping]]; [activitymapping addpropertymapping:[rkrelationshipmapping relationshipmappingfromkeypath:@"sightingnoteadded.sighting" tokeypath:@"observationnoteobservation" withmapping:observationmapping]]; [activitymapping addpropertymapping:[rkrelationshipmapping relationshipmappingfromkeypath:@"identificationadded.sighting" tokeypath:@"identificationobservation" withmapping:observationmapping]]; [activitymapping addpropertymapping:[rkrelationshipmapping relationshipmappingfromkeypath:@"identificationadded.identification" tokeypath:@"identification" withmapping:identificationmapping]]; [activitymapping addpropertymapping:[rkrelationshipmapping relationshipmappingfromkeypath:@"postadded.post" tokeypath:@"post" withmapping:postmapping]]; [manager addresponsedescriptor:[rkresponsedescriptor responsedescriptorwithmapping:activitymapping                                                                        pathpattern:nil                                                                            keypath:nil                                                                        statuscodes:rkstatuscodeindexsetforclass(rkstatuscodeclasssuccessful)]]; 

... brevity won't add mappings...

when want make call paginator, i'm wiring this:

-(void)setpaginatorforstream:(nsstring*)streamname {      [bblog log:@"bbstreamcontroller.setpaginatorforstream:"];     [bblog debug:@"streamname:" withmessage:streamname];      __weak typeof(self) weakself = self;            nsstring *streamurl = [nsstring stringwithformat:@"http://api.blahblah.org.au/%@?pagesize=:perpage&page=:currentpage&x-requested-with=xmlhttprequest", streamname];       if (!self.paginator) {  paginationmapping = [rkobjectmapping mappingforclass:[bbactivitypaginator class]];          rkresponsedescriptor *activitiesresponsedescriptor = [rkresponsedescriptor responsedescriptorwithmapping:[rkobjectmapping mappingforclass:[bbactivitypaginator class]]                                                                      pathpattern:nil                                                                          keypath:nil                                                                      statuscodes:[nsindexset indexsetwithindex:200]];          self.paginator = [[bbactivitypaginator alloc]initwithrequest:[nsurlrequest requestwithurl:[[nsurl alloc]initwithstring:streamurl]]                                                    paginationmapping:paginationmapping                                                  responsedescriptors:[[nsarray alloc]initwithobjects:activitiesresponsedescriptor, nil]                                                          anddelegate:weakself];      }  self.paginator.perpage = 20;  [self.paginator setcompletionblockwithsuccess:^(rkpaginator *paginator, nsarray *objects, nsuinteger page) {     [weakself.tableitems addobjectsfromarray:objects];     [weakself.tableview reloaddata];  } failure:^(rkpaginator *paginator, nserror *error) {     nslog(@"failure: %@", error); }]; 

which being activated in method:

-(void)loadrequest {     [bblog log:@"bbstreamcontroller.loadrequest"];      self.fetchbatch++;      [self.paginator loadpage:self.fetchbatch];      //[self.paginator setpaginatorloading:yes];     self.loading = yes; } 

from class initialisation:

-(bbstreamcontroller*)initwithgroup:(nsstring*)groupidentifier                         anddelegate:(id<bbstreamprotocol>)delegate {     [bblog log:@"bbstreamcontroller.initwithgroup:anddelegate:"];      self = [self init];      if(self) {         _controller = delegate;         groupid = groupidentifier;          [self setpaginatorforstream:groupidentifier];          [self loadrequest];     }      [self loadview];      return self; } 

and getting nothing pain...

output:

e restkit:rkpaginator.m:207 paginator didn't map info compute page count. assuming no pages. 2013-05-06 17:48:09.487 bowerbird[26570:5807] w restkit.object_mapping:rkmapperoperation.m:98 adding mapping error: no mappable values found of attributes or relationship mappings

any 1 familiar finer details of restkit 0.2.x's new pagination?

your pathpattern , keypath information needs set on activitiesresponsedescriptor definition, not paginator response descriptor isn't used anything.

the response descriptor overall response , describes how to:

  1. tell have match : pathpattern
  2. find data process : keypath
  3. create response objects : data mapping

the paginator mapping additional , only used extract page data response being processed.

move path pattern , key path response descriptor used request. path pattern should contain "pagedlistitems" looks of it.


Comments