【问题标题】:Swift/Firebase copy pathSwift/Firebase 复制路径
【发布时间】:2016-06-18 10:16:42
【问题描述】:

基本上,我正在努力将路径复制到其他目的地。我有一个包含 root/users/id/info 的目录,如下所示:

users{
  id{
    username:Andreas
    dob:12/12/2012
    hobby:football
  }
}

但是,我想要完成的是将带有 ID 的路径(包含有关安德烈亚斯的所有信息)移动到另一条路径 (root/HighestRanking/) 所以它看起来像这样:(root/HighestRanking/andreasUID/info),但我不能想办法做到这一点。有什么想法吗?

提前谢谢..

这是我目前拥有的代码:

ref.child("Users").child(uid).observeEventType(FIRDataEventType.ChildAdded) { (snap:FIRDataSnapshot) in 
  var pathway = snap
  self.ref.child("HighestRanking").child(uid)..setValue([pathway], withCompletionBlock: { (error, ref) in                              
     if error != nil {
         print("An error occured.")
     } else {
         print("Success.")
     }   
  }

//出现错误..也尝试了其他几种方法..

【问题讨论】:

  • 什么事件应该触发“复制”?您是否已经拥有用户 ID 和数据?有什么代码可以给我们看吗?
  • @adolfosrs 我现在提供了更多代码。触发器只是一个按钮(@UIButton)。
  • 为什么要复制或移动所有这些数据?你能创建一个对它的引用吗?
  • @Jay 只是因为我想在两个地方显示数据。这也是我尝试过的,但我的问题得到了解决。
  • 请记住,如果数据发生变化 - 例如,用户将他的爱好从“足球”更改为“集邮”,您将不得不在多个位置更改数据。如果您在多个位置拥有它,情况会更加严重。而如果您存储对数据本身的引用 - 在这种情况下为用户 ID,如果爱好发生变化,您只需在一个位置更改一次。

标签: swift firebase firebase-realtime-database


【解决方案1】:

您可能正在寻找类似于以下内容的内容:

ref.child("Users").child(uid).observeEventType(FIRDataEventType.Value, withBlock: { (snapshot) in
  if let data = snapshot.value as! [String : AnyObject] {
    self.ref.child("HighestRanking").child(uid).setValue(data)
  }
})

请注意,由于您想在触发 UIButton 时“复制”数据,因此您应该使用 FIRDataEventType.Value 而不是 FIRDataEventType.ChildAdded。

【讨论】:

  • 正是我需要的!非常感谢!节省了我很多时间。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-03-16
  • 1970-01-01
  • 1970-01-01
  • 2017-02-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多