2017-06-14 3 views
0

In meiner iOS-App können Benutzer einen Beitrag erstellen, damit andere Benutzer ihn in anderen Posts anzeigen können. Jetzt stieß ich auf ein Problem in der Logik des Abrufens alter und neuer Posts nach dem ersten Abruf.Die beste Methode zum Laden von Objekten in Batches

So aktuell, wenn ein Benutzer die Beiträge View Controller öffnet dies die Methode, die sagen, aufgerufen wird, die letzten 40 Beiträge in der Nähe seiner Lage zu holen (ich benutze Parse-SDK und analysieren Backend-Server)

+(NSArray*)fetchLatestPostsNearLocation:(PFGeoPoint*) location 
{ 
PFQuery *query = [PFQuery queryWithClassName:@"Post"]; 
[query setLimit:40]; 
[query whereKey:@"location" nearGeoPoint:location]; 
[query includeKey:@"poster"]; 
NSSortDescriptor* sorter=[NSSortDescriptor sortDescriptorWithKey:@"date" ascending:NO]; 
[query orderBySortDescriptor:sorter]; 
return [query findObjects]; 
} 

Lets der Benutzer erreicht den letzten Post und möchte ältere Posts holen, wie würde ich das machen?

Ich denke über die Verwendung des Datums in meiner Abfrage, aber ich bin mir nicht sicher, wie oder sollte ich ein Sequenzfeld in das Posts-Modell einführen und basierend auf diesem Feld abrufen (obwohl ich denke, das ist nicht richtig Weg, es zu tun). Wie würde ich auch neuere Posts laden?

Dank

Antwort

0

Zuerst müssen Sie würde die älteste Post finden (da Sie eine Art Zeitleiste zeigen Ich nehme an, Sie werden sie nach Datum bereits Sortierung). Halten Sie das älteste Datum (zum Beispiel: oldestDate) und dann eine andere Charge abfragen könnte mit whereKey:lessThan:

Date *oldestDate = ... 


PFQuery *query = [PFQuery queryWithClassName:@"Post"]; 
[query setLimit:40]; 
[query whereKey:@"location" nearGeoPoint:location]; 
[query includeKey:@"poster"]; 
[query orderByDescending:@"date"]; 
[query whereKey:@"date" lessThan:oldestDate]; // Get it from function param, check if-nil to only have 1 method for loading & pagination, if possible 

return [query findObjects]; 

// Append new posts to model data, reload tableview/collectionview 


Sie auch (Benchmarking erforderlich):

  • Verwenden createdAt/updatedAt des letzten Beitrag Sie heruntergeladen haben.
  • Verwenden limit/skip statt whereKey:lessThan:
Verwandte Themen