如何将数据正确附加到数组?迅捷4

时间:2018-10-18 12:04:45

标签: arrays swift firebase firebase-realtime-database

我一直在尝试从Firebase检索一些数据并将其存储在数组中。但是当我尝试附加数据时遇到了一个问题。

我只能将数据存储在数组的内部和外部,而突然间我失去了数组内部的所有值。为什么会这样?请帮助我找到我所缺少的...

hero.id

1 个答案:

答案 0 :(得分:1)

可能是因为您在闭包内分配数据,这可能会在稍后发生。所以基本上最后一个打印语句出现在闭包语句之前。

我建议您使用 didSet 来理解序列。例如:

var names: [String] = [String]() { 
    didSet {
      print(names)  // this is print each time the value is set
    }
}
var txts: [String] = [String]() {
   didSet {
    print(txts)
   }
}
var imgUrls: [String] = [String]() {
   didSet {
       print(imgUrls)
   }
}

Database.database().reference().child("Posts").child("dummy").observe(.value) { (snapshot) in 
     guard let snapshots = snapshot.children.allObjects as? [DataSnapshot] else { return }

  for snap in snapshots {
                let autoId = snap.key as String
                Database.database().reference().child("Posts").child("dummy").child(autoId).observe(.value, with: { (snapshot) in
                    guard let data = snapshot.value as? [String: Any] else {return}

                    //name
                    guard let name =  data["name"] as? String else {return}
                    self.names.append(name)
                    //image
                    guard let imgUrl = data["image"] as? String else {return}
                    self.imgUrls.append(imgUrl)
                    //txt
                    guard let txt = data["text"] as? String else {return}
                    self.txts.append(txt)
}



}