Ускорьте получение сообщений для моего приложения в социальной сети, используя запрос вместо того, чтобы неоднократно наблюдать одно событие

У меня есть массив ключей, которые приводят к публикации объектов для моей социальной сети, например, / posts / id / (информация о публикации)

Когда я загружаю посты, я загружаю / posts / 0, а затем / posts / 1 и т. Д., Используя метод наблюдаем единый_вентилятор (.Value).

Я использую lazyTableView для загрузки 30 одновременно, и это довольно медленно. Есть ли способ, которым я могу использовать один из методов запроса или другой способ сделать это быстрее, даже если мне придется реструктурировать данные в моем дереве JSON.

Я прихожу из Parse, повторно внедряю свое приложение, и пока опыт был довольно хорошим. Только одна вещь, на которой я немного застрял. Заранее спасибо за помощь!

РЕДАКТИРОВАТЬ:

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
        }
    }
}

Эта рекурсивная функция, по сути, запускает получение значения для ключа номер i из firebase. Если это NSNULL, он знает, что это последний возможный пост для загрузки, и никогда не делает снова. Если NSNULL не получен, но я% 29 == 0, он возвращается в качестве базового варианта, поэтому одновременно загружаются только 30 сообщений (индексировано 0). Когда я установил для DoneLoading значение truetableView.reloadData() вызывается с использованием свойства обозревателя.

Вот пример того, как выглядит массив, который я выбираю

"ideaPosts" : [ {
    "id" : 0,
    "message" : "Test",
    "upvotes" : 1,
    "user" : "Anonymous"
  }, {
    "id" : 1,
    "message" : "Test2",
    "upvotes" : 1,
    "user" : "Anonymous"
  } ]

Ответы на вопрос(1)

Ваш ответ на вопрос