问题描述
因此,我的目标是能够创建具有任何日期的事件,并且如果该日期已过期,它将能够删除该文档。我遇到的问题是,当我在当前时间 25 分钟后的任何时间创建带有日期的事件时,由于我的自动删除功能,文档会在我创建时自动删除,但我不明白为什么它删除。我是这样设置功能的...
func deleteExpiredCreatedEvents() {
setupDate { (dateforexpiry) in
self.db.collection(Constants.Firebase.schoolCollectionName).whereField("expiresAt",isLessThanOrEqualTo: dateforexpiry!).addSnapshotListener { (querySnapshot,error) in
if error != nil {
print("Error fetching docs/User deleted account.")
} else {
for document in querySnapshot!.documents {
let documentident = document.documentID
let docalgoliaid = document.get("algoliaObjectID") as! String
deleteIndex.deleteObject(withID: ObjectID(rawValue: docalgoliaid)) { (result) in
if case .success(let response) = result {
print("Record Deleted!: \(response.wrapped)")
}
}
self.db.document("school_users/\(self.user?.uid)/events/\(documentident)").delete { (err) in
if err != nil {
print("Errr")
} else {
print("No errs")
self.tableView.reloadData()
}
}
}
}
}
}
}
我基本上用这个功能作为自动删除任务,我把它和这个功能结合起来完成工作
func setupDate(completion: @escaping ((String?) -> ())) {
formatter.dateFormat = "EEEE,MMMM d yyyy,h:mm aZ"
formatter.locale = .current
formatter.timeZone = .current
let dateToString = formatter.string(from: rightNow)
completion(dateToString)
}
所以我确定这个问题主要源于这个函数,rightNow
刚好等于 Date()
,当事件发生时,我按照文本在我的 dateTextField
中的方式对其进行了格式化创建。我尝试使用时区,在格式末尾添加 -0000
以获得正确的时区,将内容注释掉,但它仍然无法按照我想要的方式工作。
我测试了在当前时间之前创建到期日期的事件,它甚至在显示在完美的单元格中之前会自动删除。当我创建一个日期为当前时间 25 分钟或以下的事件,然后检查该时间之后单元格是否存在时,它也消失了,这也是完美的。一旦我创建了一个日期比当前时间晚 25 分钟的事件,该单元格就会自动删除,并且不会显示出来,这让我很困惑。
另外,我刚刚意识到,当时间改变时,我再次查看过期的单元格,它们仍然显示在 tableView 中,所以我无法弄清楚一大堆错误.
如果有人能指出我需要添加或调整的问题或其他内容,那就太好了,谢谢。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)