Mam szereg kluczy, które prowadzą do publikowania obiektów w mojej sieci społecznościowej, takich jak/post/id/(po informacji)Przyspieszenie pobierania postów dla mojej aplikacji w sieci społecznościowej za pomocą zapytania zamiast wielokrotnego obserwowania pojedynczego zdarzenia
Po załadowaniu postów załadowałem/postów/0, a następnie/postów/1 itd. Przy użyciu metody observeSingleEventOfType (.Value).
Używam lazyTableView do załadowania 30 na raz i jest dość powolny. Czy jest jakiś sposób mogę użyć jednej z metod kwerend lub inny sposób na przyspieszenie, nawet jeśli muszę do restrukturyzacji danych w moim drzewie JSON.
Pochodzę z Parse ponownie wdrażającej moją aplikację i do tej pory doświadczenie, które było całkiem dobre. Właśnie ta jedna rzecz utknąłem. Z góry dziękuję za pomoc!
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
}
})
Ta funkcja rekurencyjna zasadniczo przebiega coraz wartość dla liczby klucza I z Firebase. Jeśli jest to NSNULL, wie, że jest to ostatni możliwy wpis do załadowania i nigdy więcej. Jeśli NSNULL nie zostanie trafiony, ale% 29 == 0, to zwraca jako podstawowy przypadek, więc tylko 30 wpisów jest ładowanych naraz (0 zindeksowane). Po ustawieniu metody doneLoading na true tableView.reloadData()
jest wywoływane za pomocą obserwatora właściwości.
Oto próbka tego, co tablica ja ściągam wygląda jak
"ideaPosts" : [ {
"id" : 0,
"message" : "Test",
"upvotes" : 1,
"user" : "Anonymous"
}, {
"id" : 1,
"message" : "Test2",
"upvotes" : 1,
"user" : "Anonymous"
} ]
O wiele łatwiej będzie Ci pomóc, jeśli pokażesz nam swój kod zamiast go opisywać. Dodaj minimalny JSON (jako tekst, nie zrzut ekranu) i kod, aby odtworzyć problem w pytaniu i zobaczymy, jak można go poprawić. Przeczytaj więcej o [MCVE] (http://stackoverflow.com/help/mcve). –
Edytowane w celu objaśnienia kodu –