i'm stuck pagination issue.
when go /?pagesize=:perpage&page=:page" json response this:
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:
- tell have match :
pathpattern
- find data process :
keypath
- 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
Post a Comment