【发布时间】:2021-04-02 08:57:03
【问题描述】:
我正在尝试将我的回复与 Firebase 数据库中其他人的回复进行比较。我的脚本目前有 2 个 if 语句,说明它是否是我的响应,记录我的答案,然后使用它与其他响应进行比较,但它没有注册我的第二个 if 语句。
let responsesReference = Database.database().reference().child("responses")
responsesReference.observeSingleEvent(of: .value) { (snapshot: DataSnapshot) in
guard let json = snapshot.value as? [String: Any] else { return }
do {
var similarities = [Similarity]()
for answerElement in json {
if self.currentUser.uid == answerElement.key,
let myanswer = answerElement.value as? [String: Any] {
if self.currentUser.uid != answerElement.key, //DOES NOT REGISTER
let otheranswer = answerElement.value as? [String: Any] {
let percentage = myanswer.similarity(with: otheranswer)
similarities.append(
Similarity(name: answerElement.key, percentage: percentage, answer: otheranswer)
)
}
}
}
self.similarities = similarities.sorted(by: { (a, b) -> Bool in
return a.percentage > b.percentage
})
self.tableView.reloadData()
}
【问题讨论】:
-
你知道第一个if语句是否执行了吗?您是否检查了第一个 if 语句的两个条件是否都满足?如果没有一些示例输入来说明如何重现问题,就不可能得到答案。
-
是的,首先执行了 if 语句。我认为问题在于,一旦第一个 if 语句为真,第二个不再为真,所以它不会执行?不确定是否有更好的方法来编写此脚本。
标签: swift firebase firebase-realtime-database swift5