【问题标题】:removing from firebase database从 Firebase 数据库中删除
【发布时间】:2017-07-30 03:58:29
【问题描述】:

我正在为练习项目创建在线订购服务。我最近读到的两件事是编辑 tableview 功能。当我去滑动删除一个项目时,它不会从数据库中取出正确的项目。此外,如果数组中只有一个项目并且我尝试将其删除,则会使其崩溃。有人知道这是怎么回事吗?

func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCellEditingStyle, forRowAt indexPath: IndexPath) {

    orderNumber.remove(at: indexPath.row)
    itemsArray.remove(at: indexPath.row)
    priceArray.remove(at: indexPath.row)
    quantityArray.remove(at: indexPath.row)

    databaseRef.child("Users/\((authRef.currentUser?.uid)!)/Order/\(orderNumber.remove(at: indexPath.row))").removeValue { (error, ref) in
        if error != nil {
            print(error?.localizedDescription as Any)
        } else {

        }
    }
}

【问题讨论】:

    标签: swift firebase swift3


    【解决方案1】:

    看起来你只需要在删除之前检查数组计数:-

    if orderNumber.count > indexPath.row {
     orderNumber.remove(at: indexPath.row)
    }
    if itemsArray.count > indexPath.row {
     itemsArray.remove(at: indexPath.row)
    }
    if priceArray.count > indexPath.row {
     priceArray.remove(at: indexPath.row)
    }
    if quantityArray.count > indexPath.row {
     quantityArray.remove(at: indexPath.row)
    }
    

    【讨论】:

    • 它仍然崩溃。问题发生在数据库引用调用中。我在调试器中得到的唯一结果是“索引超出范围”
    【解决方案2】:

    显然,您从orderNumber 中删除了两次。首先你要在这里删除:

    orderNumber.remove(at: indexPath.row)
    

    那么你在这里删除:

    child("Users/\((authRef.currentUser?.uid)!)/Order/\(orderNumber.remove(at: indexPath.row))")
    

    您使用多个集合的任何具体原因?

    【讨论】:

    • 是的,我注意到并修复了它。我也修复了另一个问题,但是现在当我删除一个问题时,它会复制并再次使用这些选项以及旧选项填充表格视图。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-06-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多