我知道在SO上也有类似的问题,但是我仍然无法解决问题并解决问题。

问题很简单:我想以相反的顺序从Firebase数据库中获取项目。我使用.reverse()这样做。它适用于该单词的某些含义,项目实际上已重新排列,但第二个由于某种原因始终排在最后。

有人可以在这种情况下向我解释进行换向的正确方法吗?我希望在不创建新数组的情况下进行反转。可能吗?这是我的示例代码。

任何帮助将不胜感激,谢谢!

Database.database().reference().child("posts").observe(.childAdded) { (snapshot) in

let postId = snapshot.key

guard let dictionary = snapshot.value as? Dictionary<String, AnyObject> else { return }

let post = Post(postid: postId, dictionary: dictionary)

postsArray.append(post)

postsArray.reverse()
self.finishedFetching = true

self.collectionView.reloadData()

}

用 childAdded

postsArray.append(post) postsArray.reverse()

完成每次呼叫追加到数组和挫折的,这将导致在一个阵列,这不是颠倒所有的阵列一次的结果,所以你可能会发现.value不.childAdded

这是因为您每次添加后都需要反转

例

  1. 附加A-> [A]

  2. 反向-> [A]

  3. 附加B-> [A,B]

  4. 反向-> [B,A]

  5. 附加C-> [B,A,C]

  6. 反向-> [C,A,B]