gpt4 book ai didi

iOS Swift FIrebase : moving data to another firebase ref

转载 作者:搜寻专家 更新时间:2023-10-31 22:06:47 24 4
gpt4 key购买 nike

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

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

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

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

“元素”(又名“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();

})

}

关于iOS Swift FIrebase : moving data to another firebase ref,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36143450/

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