Ich habe eine Reihe von Schlüsseln, die dazu führen, Objekte für mein soziales Netzwerk wie posts/id/(Post-Info)Beschleunigen Holen von Posts für meine Social-Network-App mit Abfrage anstelle eines einzelnen Ereignisses wiederholt zu beobachten
Wenn ich die Posts lade, lade ich/posts/0 und dann/posts/1 usw. mit der Methode observeSingleEventOfType (.Value).
Ich benutze eine LazyTableView, um 30 auf einmal zu laden, und es ist ziemlich langsam. Gibt es eine Möglichkeit, eine der Abfrage-Methoden oder eine andere Möglichkeit, um es schneller zu machen, auch wenn ich die Daten in meinem JSON-Baum neu strukturieren muss.
Ich komme aus Parse meine App re-implementieren und so weit die Erfahrung als recht gut gewesen. Nur diese eine Sache bin ich ein bisschen fest. Vielen Dank im Voraus für die Hilfe!
EDIT:
func loadNext(i: Int)
{
// check if exhists
let ideaPostsRef = Firebase(url: "https://APPURL")
ideaPostsRef.childByAppendingPath(i.description).observeSingleEventOfType(.Value, withBlock: {
(snapshot) in
if i % 29 == 0 && i != 0 && !self.hitNull { return }
// false if nil
// true if not nil
if !(snapshot.value is NSNull)
{
let postJSON = snapshot.value as! [String: AnyObject]
print("GOT VALID \(postJSON)")
let post = IdeaPost(message: postJSON["message"] as! String, byUser: postJSON["user"] as! String, withId: i.description)
post.upvotes = postJSON["upvotes"] as! Int
self.ideaPostDataSource.append(post)
self.loadNext(i + 1)
}
else
{
// doesn't exhist
print("GOT NULL RETURNING AT \(i)")
self.doneLoading = true
self.hitNull = true
return
}
})
Diese rekursive Funktion im Wesentlichen läuft der Wert für die Schlüsselnummer bekommen i von Feuerbasis. Wenn es NSNULL ist, weiß es, dass es der letzte mögliche Post ist, der geladen wird, und nie wieder tut. Wenn NSNULL nicht getroffen wird, aber i% 29 == 0, wird als Basisfall zurückgegeben, so dass nur 30 Posts gleichzeitig geladen werden (0 indiziert). Wenn ich doneLoading auf true setze, wird tableView.reloadData()
mit einem Property Observer aufgerufen. Hier
ist ein Beispiel, was das Array Ich bin Aussehen holen wie
"ideaPosts" : [ {
"id" : 0,
"message" : "Test",
"upvotes" : 1,
"user" : "Anonymous"
}, {
"id" : 1,
"message" : "Test2",
"upvotes" : 1,
"user" : "Anonymous"
} ]
Es wird viel einfacher zu helfen, wenn Sie uns Ihren Code zeigen, anstatt ihn zu beschreiben. Fügen Sie den minimalen JSON (als Text, kein Screenshot) und den Code ein, um das Problem in Ihrer Frage zu reproduzieren und wir können sehen, wie es verbessert werden kann. Lesen Sie mehr über [MCVE] (http://stackoverflow.com/help/mcve). –
Bearbeitet, um Codeerklärung zu enthalten –