iOS Swift FIRebase:将数据移动到另一个 firebase ref

2023-12-28

我有一个简单的购物清单应用程序,由 firebase 支持/同步,并且由多个用户添加项目。我已经为“GroceryItem”和“Users”创建了数据结构。

我的应用程序的一个功能是,您可以单击单元格,它会在项目旁边放置一个复选标记,并将“已完成”布尔值更改为 true。

我正在尝试制作一个按钮,它将把所有选中标记的项目移动到一个名为“历史记录”的单独列表中。

以下是我多次失败的尝试之一。我还包括了 XCode 给我的错误:

“Element”(又名“AnyObject”)无法转换为“FDataSnapshot”;您的意思是使用“as!”吗?逼沮丧?

@IBAction func itemsBoughtACTION(sender: AnyObject) {
        ref.queryOrderedByChild("completed").observeEventType(.Value,
            withBlock: { snapshot in

        for item in snapshot.children {
            var lastItem = GroceryItem(item)

            }
        })
    }

编辑:我只想对已经存储在 firebase 中的一些数据进行数据处理,将其移动到另一个 firebase 位置并删除原始数据。


其过程是:查询出想要的数据,写出到另一个节点,然后从原来的节点删除。

上面的代码将不起作用,因为它期望从 UI 而不是 FDataSnapshot 传递控件。如果您已经完成查询并拥有数据集,则应该创建一个函数,将 FDataSnapshot 作为参数传递并进行相应处理。

为了简化答案,假设您需要获取快照并在单击按钮时对其进行处理。

有很多不同的方法可以解决这个问题,这是一个概念性的选项(未经测试,所以不要复制粘贴)

        //method is called when a button in the UI is clicked/tapped.
        @IBAction func itemsBoughtACTION(sender: AnyObject) {

           let rootRef = Firebase(url:"https://your-Firebase.firebaseio.com")

           let groceryRef = rootRef.childByAppendingPath("groceryLists")

           //get each child node of groceryRef where completed == true
           groceryRef.queryOrderedByChild("completed").queryEqualToValue(true)
       .observeEventType(.ChildAdded, withBlock: { snapshot in

              //set up a history node and write the snapshot.value to it
              // using the key as the node name and the value as the value.
              let historyNode = rootRef.childByAppendingPath("history")
              let thisHistoryNode = historyNode.childByAppendingPath(snapshot.key)
              thisHistoryNode.setValue(snapshot.value) //write to the new node

              //get a reference to the data we just read and remove it
              let nodeToRemove = groceryRef.childByAppendingPath(snapshot.key)
              nodeToRemove.removeValue();

           })

        }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

iOS Swift FIRebase:将数据移动到另一个 firebase ref 的相关文章

随机推荐