parsing分页不起作用

在我的应用程序中,我使用Parse。 我有这样的设置:

- (id)initWithCoder:(NSCoder *)aDecoder { self = [super initWithCoder:aDecoder]; if (self) { // The className to query on self.parseClassName = @"Prayers"; // Whether the built-in pull-to-refresh is enabled self.pullToRefreshEnabled = YES; // Whether the built-in pagination is enabled self.paginationEnabled = YES; // The number of objects to show per page self.objectsPerPage = 20; } return self; } - (PFQuery *)queryForTable { PFQuery *query = [PFQuery queryWithClassName:@"Prayers"]; // If no objects are loaded in memory, we look to the cache first to fill the table // and then subsequently do a query against the network. if (self.objects.count == 0) { query.cachePolicy = kPFCachePolicyCacheThenNetwork; } [query orderByDescending:@"createdAt"]; return query; } - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath object:(PFObject *)object { static NSString *CellIdentifier = @"Cell"; Cell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; if (cell == nil) { cell = [[Cell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier]; } self.theObject = object; BOOL anony = [object[@"Anonymous"] boolValue]; if (!anony) { NSString *names = [[object[@"FirstName"] stringByAppendingString:@" "] stringByAppendingString:object[@"LastName"]]; cell.profileName.text = names; cell.contentLabel.text = object[@"Request"]; cell.firstName = object[@"FirstName"]; cell.lastName = object[@"LastName"]; cell.iostoken = object[@"DeviceID"]; cell.request = names; cell.prayerObject = object; PFFile *thumbnail = object[@"ProfilePic"]; cell.profilePic.image = [UIImage imageNamed:@"AppIcon60x60@2x.png"]; /*[cell.commentButton addTarget:self action:@selector(didTapCommentButtonAction:) forControlEvents:UIControlEventTouchUpInside]; [cell.commentButton setTitle:@"Share" forState:UIControlStateNormal]; [cell.commentButton setTitleColor:[UIColor blackColor] forState:UIControlStateNormal]; [cell.commentButton setTitleColor:[UIColor greenColor] forState:UIControlStateHighlighted];*/ [thumbnail getDataInBackgroundWithBlock:^(NSData *imageData, NSError *error) { UIImage *thumbnailImage = [UIImage imageWithData:imageData]; UIImageView *thumbnailImageView = [[UIImageView alloc] initWithImage:thumbnailImage]; cell.profilePic.image = thumbnailImage; }]; NSString *dates = object[@"dateMade"]; NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; [formatter setDateFormat:@"MMM_dd_yyyy"]; NSDate *datefromstring = [formatter dateFromString:dates]; NSDateFormatter *formatter2 = [[NSDateFormatter alloc] init]; [formatter2 setDateFormat:@"MMM dd, yyyy"]; cell.dateLabel.text = [formatter2 stringFromDate:datefromstring]; UIFont *cellFont = [UIFont fontWithName:@"Verdana-Bold" size:15]; UIFont *cellFont2 = [UIFont fontWithName:@"Verdana-Bold" size:12]; } else { // Configure the cell to show todo item with a priority at the bottom cell.profileName.text = object[@"Title"]; cell.contentLabel.text = object[@"Request"]; cell.firstName = object[@"FirstName"]; cell.lastName = object[@"LastName"]; cell.iostoken = object[@"DeviceID"]; cell.request = object[@"Title"]; cell.prayerObject = object; PFFile *thumbnail = object[@"ProfilePic"]; cell.profilePic.image = [UIImage imageNamed:@"AppIcon60x60@2x.png"]; [thumbnail getDataInBackgroundWithBlock:^(NSData *imageData, NSError *error) { UIImage *thumbnailImage = [UIImage imageWithData:imageData]; UIImageView *thumbnailImageView = [[UIImageView alloc] initWithImage:thumbnailImage]; cell.profilePic.image = thumbnailImage; }]; NSString *dates = object[@"dateMade"]; NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; [formatter setDateFormat:@"MMM_dd_yyyy"]; NSDate *datefromstring = [formatter dateFromString:dates]; NSDateFormatter *formatter2 = [[NSDateFormatter alloc] init]; [formatter2 setDateFormat:@"MMM dd, yyyy"]; cell.dateLabel.text = [formatter2 stringFromDate:datefromstring]; } return cell; } - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { PFObject *entry = [self.objects objectAtIndex:indexPath.row]; NSString *commentString = entry[@"Request"]; NSString *nameString = @""; NSLog(@"%@", commentString); return [Cell heightForCellWithContentString:(NSString *)commentString] +25 ; } #pragma mark - #pragma mark Table view delegate - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { #if __IPHONE_OS_VERSION_MAX_ALLOWED >= 30200 if( UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad ) { if (_webViewController2 == nil) { self.webViewController2 = [[[WebViewController2 alloc] initWithNibName:@"WebViewController2" bundle:[NSBundle mainBundle]] autorelease]; } RSSEntry *entry = [_allEntries objectAtIndex:indexPath.row]; _webViewController2.entry = entry; [self.navigationController pushViewController:_webViewController2 animated:YES]; [self.objects objectAtIndex:indexPath.row]; } else { PFObject *entry = [self.objects objectAtIndex:indexPath.row]; if (_webViewController == nil) { self.webViewController = [[[WebViewController alloc] initWithNibName:@"WebViewController" bundle:[NSBundle mainBundle]] autorelease]; } _webViewController.finalObject = entry; [self.navigationController pushViewController:_webViewController animated:YES]; } #endif } 

据我所知,这应该一次加载20个项目,当你滚动到这些结束时,加载下20个。但是,一旦我有20个项目,应用程序崩溃,我得到这个消息:

 Terminating app due to uncaught exception 'NSRangeException', reason: '*** -[__NSArrayM objectAtIndex:]: index 20 beyond bounds [0 .. 19]' 

在放置一个exception断点之后,导致错误的行在heightForRow方法中

  PFObject *entry = [self.objects objectAtIndex:indexPath.row]; 

这是怎么回事?