Ho una serie di chiavi che portano a postare oggetti per il mio social network come/posts/id/(informazioni post)Accelerare il recupero di post per la mia app di social network utilizzando la query anziché osservare ripetutamente un singolo evento
Quando carico i post, carico/posts/0 e quindi/posts/1 ecc. Usando il metodo observSingleEventOfType (.Value).
Io uso un lazyTableView per caricare 30 alla volta ed è piuttosto lento. C'è un modo per utilizzare uno dei metodi di query o un altro modo per renderlo più veloce anche se devo ristrutturare i dati nel mio albero JSON.
Sto venendo da Parse ri-implementando la mia app e finora l'esperienza è stata abbastanza buona. Solo questa cosa sono un po 'bloccata. Grazie in anticipo per l'aiuto!
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
}
})
Questa funzione ricorsiva gestisce essenzialmente ottenere il valore per i numero del tasto da Firebase. Se è NSNULL, sa che è l'ultimo post possibile da caricare e non lo fa mai più. Se NSNULL non viene colpito ma i% 29 == 0, restituisce come caso base quindi vengono caricati solo 30 post alla volta (0 indicizzati). Quando ho impostato doneLoading su true tableView.reloadData()
viene chiamato utilizzando un osservatore delle proprietà.
Ecco un esempio di ciò che la serie che sto recupero assomiglia
"ideaPosts" : [ {
"id" : 0,
"message" : "Test",
"upvotes" : 1,
"user" : "Anonymous"
}, {
"id" : 1,
"message" : "Test2",
"upvotes" : 1,
"user" : "Anonymous"
} ]
Sarà molto più facile aiutare se ci mostri il tuo codice invece di descriverlo. Includere il minimo JSON (come testo, non uno screenshot) e il codice per riprodurre il problema nella tua domanda e possiamo vedere come può essere migliorato. Maggiori informazioni su un [MCVE] (http://stackoverflow.com/help/mcve). –
Modificato per includere la spiegazione del codice –