在 Swift 中使用 .reverse() 时项目顺序错误

Wrong items order when using .reverse() in Swift

我知道这里有一些类似的问题,但是我仍然无法解决我的问题并进入正题。

问题很简单:我想以相反的顺序从 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]