【发布时间】:2019-06-11 11:47:33
【问题描述】:
我想将具有最高时间戳的数组排序到最低时间戳。首先,我想从 Firebase 获取所有数据并将其添加到数组中,当获取所有数据时,我想对数组进行排序。当我尝试这样做时,我会在posts.sort(by: {$0.timestamp > $1.timestamp}) 行收到此错误:
二元运算符 '>' 不能应用于两个 'Int?'操作数
这是我的代码:
var posts: [Post] = []
Api.MyPosts.fetchMyPosts(userId: self.userId) { (key) in
Api.Post.observePost(withId: key, completion: {
post in
self.posts.insert(post, at: 0)
self.tableView.reloadData()
})
posts.sort(by: {$0.timestamp > $1.timestamp})
}
有人知道我如何修复这个错误并将时间戳保持为 int 吗?
【问题讨论】:
-
posts.sort(by: {$0.timestamp ?? 0 > $1.timestamp ?? 0}) -
一些事情。该问题询问 Firebase,但没有显示 Firebase 代码。其次,我们不知道您的 Post 类是如何定义的。此外,该代码似乎没有阅读帖子,看起来它只阅读了一篇。最后——这是最重要的。您想在代码中对数据进行排序,还是希望 Firebase 以降序显示数据?关于该特定主题,这里有很多关于 SO 的解决方案。
-
您的 int var 似乎是可选的。如果保证始终有一个值,请像
var int = 0或像var num: Int!这样定义它,这也将处理该错误。如果它是从 Firebase 填充的,请执行此操作let timestamp = firebase_stuff.value as? Int ?? 0
标签: arrays swift firebase sorting