Database 循环遍历具有键值对的项数组

Database 循环遍历具有键值对的项数组,database,firebase,loops,nsarray,for-in-loop,Database,Firebase,Loops,Nsarray,For In Loop,我使用名为“addToBasketButtonPressed()”的函数在我的购物篮中添加默认数量为1的商品Id,在else检查购物篮中是否已经存在要追加的商品时调用的函数名为“incrementQty”,如果确实存在,则只需将数量增加1 @objc func addToBasketButtonPressed() { //check if user is logged in or show login view if MUser.currentUser() != nil

我使用名为“addToBasketButtonPressed()”的函数在我的购物篮中添加默认数量为1的商品Id,在else检查购物篮中是否已经存在要追加的商品时调用的函数名为“incrementQty”,如果确实存在,则只需将数量增加1

    @objc func addToBasketButtonPressed() {
    //check if user is logged in or show login view
    if MUser.currentUser() != nil {

        downloadBasketFromFirestore(MUser.currentId()) { (basket) in
            if basket == nil {
                self.createNewBasket()
            }else {

                self.incrementQty(basketId: basket!.id, itemToUpdate: self.item!.id, deltaQty: 1)

                let qty: Int = 1
                let item = self.item.id
               // let dataTosave = ("Item", item!, "Qty", qty)
                let dataTosave: [String: Any] = ["\(item)": qty]

                basket?.itemIds.append("\(dataTosave)")

                print("basket id is \(basket!.id)")
                print("current item name is \(self.item.name)")

                self.updateBasket(basket: basket!, withValues: [kITEMIDS: basket!.itemIds!])
下面是将数量增加1的函数,这是错误的

错误1= 对于itemArray{

错误2= 元组类型(键:字符串,值:任意)的值在最后3行中没有成员“下标”

    func incrementQty (basketId: String, itemToUpdate: String, deltaQty: Int) {

    FirebaseReference(.Basket).document(basketId).getDocument { (documentSnapshot, error) in
    if let error = error {
                   print(error.localizedDescription)
                   return
        }

        if let documentData = documentSnapshot?.data() {

            print("item exists. update qty")
            print("document data in itemIds", documentData)

            let itemArray = documentData["itemIds"] as? [String: Int]
            print("items in item array \(itemArray)")

                    for item in itemArray! {

                    if item["Id"] == itemToUpdate {
                    print("checking document with id", item["Id"])
                    (item["Qty"] as! Int) + deltaQty
                }
            }
如果我注释掉最后4行代码,并通过注释掉“”as?[String:Any]”修改下面的代码,如下所示,那么在调试窗口中,我可以看到项目列表。如果我没有注释掉“”as?[String:Any]”,那么它是零

                let itemArray = documentData["itemIds"] // as? [String: Int]
            print("items in item array \(itemArray)")

我的问题是,我如何循环这个列表来检查项目用户是否已经添加到篮子中,如果已经存在,那么只需将数量增加1,否则使用默认数量1添加


注意:数据是从Firebase数据库中提取的。

在堆栈溢出时,请不要显示文本和代码的图片。请将文本复制到问题本身,以便更易于阅读和搜索。@Doug Stevenson,我已将图片替换为实际文本。我的帖子尚未得到任何回复,这是您可以帮助我的吗?