首页 > 解决方案 > 即使应用程序没有运行,如何知道我的计时器何时停止

问题描述

这可能类似于 Instagram 或其他类似社交媒体平台上的故事,您发布的故事只会保留 24 小时然后自行消失,即使应用程序没有运行也是如此。我做了类似的事情,看看代码:

// Update the notification database with the deadline date
let today = Date()
let modifiedDate = Calendar.current.date(byAdding: .day, value: 1, to: today)!
// Format the date
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "MM-dd-yyyy HH:mm"
let formattedDate = dateFormatter.string(from: modifiedDate)
self.DBRef.child("Notifications").child(chosenUser).child(selectedStoryID).updateChildValues(["Due Date" : formattedDate]) { (error, ref) in
    if let error = error?.localizedDescription {
        print("Failed to set deadline with error \(error)")
    } else {
        print("Deadline set")
    }
}

这段代码的作用是获取当前日期和时间并将其添加 24 小时并将其存储在数据库中。看看下面的代码片段:

let dateformatter = DateFormatter()
dateformatter.dateFormat = "MM-dd-yyyy HH:mm"
let deadline = dateformatter.date(from: notificationTableData.storyDeadline)

_ = Timer.scheduledTimer(withTimeInterval: 1.0, repeats: true) { (timer) in

    let seconds = Int(deadline?.timeIntervalSinceNow ?? 0.0)
    self.timeLeft.text = String(format: "%02d:%02d:%02d", (seconds / 3600), ((seconds % 3600) / 60), (seconds % 60))

    if seconds == 0 {
        timer.invalidate()
        // Remove this node from the database
    }
}

此代码片段的作用是它从数据库中检索日期并将其显示在我的应用程序中。我想要的是,当当前日期和时间等于截止日期的日期和时间时,即使应用程序没有运行,我也想从 Firebase 数据库中删除特定节点(我在下面的屏幕截图中标记了它) .

数据库

标签: iosswiftfirebase-realtime-databasetimercron

解决方案


推荐阅读