时间戳方程 - Firebase 数据库 + Swift
Posted
技术标签:
【中文标题】时间戳方程 - Firebase 数据库 + Swift【英文标题】:Timestamp Equation - Firebase Database + Swift 【发布时间】:2021-11-27 06:33:23 【问题描述】:我正在学习 swift 编码和 firebase。我正在尝试这段代码,理论上它确实有意义,但是我没有达到预期的结果。好像我的数学是错误的,但是我想我可能是错误地格式化了代码。
基本上,帖子会使用时间戳保存到 firebase rtd。我希望在帖子上传后一分钟后删除该帖子。
let postFinally = Posts(timeStamp: timeStamp as! Double?)
let cutTime = 1.0 * 60.0 * 1000.0
let postTime = postFinally.timeStamp as Any as! Double
if postTime > postTime + cutTime
print("delete")
else
print("not delete")
// Timestamp derived from the firebase database. Ie, 1633590010833.0
我的代码格式错误吗?即使在所需时间之后,它也总是返回“请勿删除”。
任何帮助将不胜感激!谢谢
编辑更新的方程式但似乎不起作用。我选择剪切时间为一个小时,但它仍然会立即执行“删除”。
let postFinally = Posts(timeStamp: timeStamp as! Double?)
let cutTime = 1.0 * 60.0 * 60.0 * 1000.0
let postTime = postFinally.timeStamp as Any as! Double
if postTime < postTime + cutTime
print("delete")
else
print("not delete")
// Timestamp derived from the firebase database. Ie, 1633590010833.0
【问题讨论】:
【参考方案1】:看这里
if postFinally.timeStamp! > postFinally.timeStamp! + cutTime
print("delete")
你在 postFinally.timeStamp 中添加了一些东西,那么 postFinally.timeStamp 是如何大于 postFinally.timeStamp + cutTime 的呢?
postFinally.timeStamp + cutTime > postFinally.timeStamp
所以我认为你的代码会执行 else 块。
或
您可以将发布的时间作为字符串获取,然后您可以轻松获取以秒为单位的时差。这是一个例子
guard let postedDate = timeString.toDate() else return ""
let timeDifferenceSecond = Date().timeIntervalSince(postedDate)
【讨论】:
这很奇怪,因为当我这样做时,无论实际时间如何,它都会执行第一个块。我将编辑上面的答案,并直观地描述我的意思。谢谢你的意见,虽然我真的很感激 我已经添加了另一个解决方案,请检查。以上是关于时间戳方程 - Firebase 数据库 + Swift的主要内容,如果未能解决你的问题,请参考以下文章
Firebase FCM React 项目问题 - firebase-messaging-sw.js 类型错误?