【问题标题】:Timestamp Equation - Firebase Database + Swift时间戳方程 - Firebase 数据库 + 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       

【问题讨论】:

    标签: swift firebase-realtime-database


    【解决方案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) 
    

    【讨论】:

    • 这很奇怪,因为当我这样做时,无论实际时间如何,它都会执行第一个块。我将编辑上面的答案,并直观地描述我的意思。谢谢你的意见,虽然我真的很感激
    • 我已经添加了另一个解决方案,请检查。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-12-20
    • 2020-05-11
    • 2018-04-16
    • 1970-01-01
    • 2020-04-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多