在 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
因为每次追加都要反转
例子
- 追加 A -> [A]
- 反转 -> [A]
- 追加 B -> [A,B]
- 反向 -> [B,A]
- 追加 C -> [B,A,C]
- 反向 -> [C,A,B]
我知道这里有一些类似的问题,但是我仍然无法解决我的问题并进入正题。
问题很简单:我想以相反的顺序从 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
因为每次追加都要反转
例子
- 追加 A -> [A]
- 反转 -> [A]
- 追加 B -> [A,B]
- 反向 -> [B,A]
- 追加 C -> [B,A,C]
- 反向 -> [C,A,B]