ios - 即使应用程序没有运行,如何知道我的计时器何时停止
问题描述
这可能类似于 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 数据库中删除特定节点(我在下面的屏幕截图中标记了它) .
解决方案
推荐阅读
- sql-server - SQL Server 替换整个未知字符串列
- python - 在一个屏幕上运行一个 kivy 应用程序,对于按下的任何键盘按钮,我可以键入 TextInput 小部件吗?
- arrays - angular.copy() 不复制数组和选择排序不起作用
- ios - 如何在 swift 5 中将数据从模态呈现的 ViewController 传递给父 ViewController?
- lisp - Common Lisp - 返回元素的函数在列表中出现 n 次
- flutter - 如何在拍摄视频时拍摄照片?
- html - 创建类似表的列,其中每一列都是其相邻列的后代
- c# - 字典问题(数据库中的自动完成字段)
- hadoop - Reg : hive 中查询优化器的效率
- jquery - 使用jquery根据值从输入标签中获取文本