【问题标题】:Issues when trying to remove the firebase reference尝试删除 firebase 引用时的问题
【发布时间】:2019-04-01 19:15:06
【问题描述】:

我在尝试删除 tableView 行之一时遇到了一些问题 - 在我的情况下,我试图从 Firebase 中删除数据,然后重新加载表视图。 请看下面的函数:

 func deleteMeds() {
     Database.database().reference().child("Meds_Database").child("UsersID").child((Auth.auth().currentUser?.uid)!).child("User_Medications").observe(DataEventType.childRemoved, with: { (snapshot) in

        if let dictionary = snapshot.value as? [String: AnyObject] {

            let medication = Meds()

            medication.medName = (dictionary["Medication_Name"]) as! String
            medication.medDosage = (dictionary["Medication_Dosage"]) as! String
            medication.medEdit = (dictionary["Medication_Frequency"]) as! String
            medication.medAlarm = (dictionary["Medication_Reminder"]) as! String


            self.meds.remove(at: 0)

            DispatchQueue.main.async(execute: {

                self.tableView.reloadData()

            })


        }

        print(snapshot)

    }, withCancel: nil)

}

我想我对 Firebase 语法感到困惑...有人可以帮帮我吗?数据库是这样的:

我相信有人可以提供帮助

【问题讨论】:

  • 我建议更改您的 firebase 设置并使用 drug_name 作为键而不是随机生成的,然后每当您需要删除 x drug_name 时,您只需引用该键并删除它包含的值
  • 这可能会有所帮助...我会在这里尝试更新
  • 我使用的是tableView,会有很多不同名称的单元格......但是用户会向左滑动并删除那个特定的单元格。如何创建删除所选行的 indexPath.row 的函数?
  • 嗯来自 Android 我可能会得到将被删除的行的名称(我假设用户可以看到药物的名称然后删除) - 当这种情况发生时我会通过将名称添加到 Firebase 参考中 child("User_Medications").child("medication_name").removeValue();不知道swift中的语法是否相同:) --> Firebase是一个键值数据库,所以每当你删除一个键时,这个键下的所有值都会被删除

标签: swift firebase firebase-realtime-database delete-row


【解决方案1】:

这里只需要删除不总是索引为0的相关对象

self.meds.remove(at: 0)

所以换成

self.meds = self.meds.filter{ $0 != medication  }

并采用Equatable协议

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-08-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-11
    相关资源
    最近更新 更多