gpt4 book ai didi

swift - 如何检查 Firebase 中 autoID 子项下保存的值?

转载 作者:行者123 更新时间:2023-11-30 12:51:41 26 4
gpt4 key购买 nike

点击删除按钮后。我正在尝试从 Firebase 数据库中删除特定的子项。我的问题是,我无法引用数据库中的特定 childByAutoId,因此我的应用程序不知道要删除哪个子项。

Firebase 数据库

Firebase Database

数据服务文件

import Foundation
import Firebase
import UIKit

let DB_BASE = FIRDatabase.database().reference().child("laboratory") //contains the root of our database
let STORAGE_BASE = FIRStorage.storage().reference()

class DataService {

static let ds = DataService()

//DB References
private var _REF_BASE = DB_BASE
private var _REF_STATION = DB_BASE.child("stations")
private var _REF_USERS = DB_BASE.child("users")


//Storage Reference
private var _REF_ITEM_IMAGE = STORAGE_BASE.child("item-pics")

var REF_BASE: FIRDatabaseReference {

return _REF_BASE

}

var REF_STATION: FIRDatabaseReference {

return _REF_STATION

}

var REF_USERS: FIRDatabaseReference {

return _REF_USERS

}

var REF_ITEM_IMAGES: FIRStorageReference {

return _REF_ITEM_IMAGE

}

//creating a new user into the firebase database

func createFirebaseDBUser(_ uid: String, userData: Dictionary<String, String>) {
REF_USERS.child(uid).updateChildValues(userData)
}

}

我尝试删除的信息不在 tableViewCell 中。我已尝试将键追加到数组中,但仍然无法访问要删除的适当子项。

func tableView(_ tableView: UITableView, canEditRowAt indexPath: IndexPath) -> Bool {
return true
}

func tableView(tableView: (UITableView!), commitEditingStyle editingStyle: UITableViewCellEditingStyle, forRowAtIndexPath indexPath: (NSIndexPath!)) {

}


func tableView(_ tableView: UITableView, editActionsForRowAt indexPath: IndexPath) -> [UITableViewRowAction]? {

let currentStation = station.title
let stationRef = DataService.ds.REF_STATION.child(currentStation!)
let inventoryRef = stationRef.child("inventory")

var deleteAction = UITableViewRowAction(style: .default, title: "Delete") {action in

//delete items from firebase


self.items.remove(at: indexPath.row)
tableView.deleteRows(at: [indexPath as IndexPath], with: .fade)

}

var editAction = UITableViewRowAction(style: .normal, title: "Edit") { action in



}

return [deleteAction, editAction]
}

我在网上没有找到这方面的信息。提前致谢!

最佳答案

让我们从简化的结构开始

-Uiiasidasod
item_name: "iMac"
-Yiimamsmdd
item_name: "MacBook"

典型的设计模式是从 Firebase 读取这些项目并将它们存储在字典数组中。该数组用作 tableView 的数据源

每个字典都是一个键:值对。

因此,上面的第一个节点有一个 Firebase 键(父节点名称为“Uiiasidasod”,值为“item_name: iMac”(请注意该值也是一个字典)

myArray[0] = ["Uiiasidasod": "item_name: 'iMac'"]
myArray[1] = ["Yiimamsmdd": "item_name: 'MacBook'"]

因此,当用户滑动表中的第 1 行时,您可以从数组第 1 行中获取字典。您将获得关键部分(Firebase 节点名称),然后可以将其从 Firebase 中删除。

关于swift - 如何检查 Firebase 中 autoID 子项下保存的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40876616/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com