Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 在数组中加载数据_Arrays_Swift - Fatal编程技术网

Arrays 在数组中加载数据

Arrays 在数组中加载数据,arrays,swift,Arrays,Swift,当我进入视图控制器时,我想在数组中加载数据。当我打印数组时,它是空的,但如果我使用刷新并再次打印数组,则会加载它。代码如下: var information = [String]() override func viewDidLoad() { super.viewDidLoad() loadinformation() print(information) } func loadinformation() { let ref = Database.databas

当我进入视图控制器时,我想在数组中加载数据。当我打印数组时,它是空的,但如果我使用刷新并再次打印数组,则会加载它。代码如下:

var information = [String]()

override func viewDidLoad() {
    super.viewDidLoad()
    loadinformation()
    print(information)
}

func loadinformation() {
    let ref = Database.database().reference()
    let uid = Auth.auth().currentUser?.uid
    let prof = ref.child("users").child(uid!).child("interess")
    prof.observeSingleEvent(of: .value,with: { (snapshot) in
        if let dict = snapshot.value as? [String: Any] {
            let name = dict["FullName"] as! String
            self.information.append(name)
        }
    })


}
这条线

prof.observeSingleEvent(of: .value,with: { (snapshot) in
是异步的,这意味着它不作为串行代码流运行,您需要在这里打印它

let name = dict["FullName"] as! String
self.information.append(name)
print(self.information)
//

或使用完成

func loadinformation(completion:@escaping(_ arr:[String]?) -> Void ) {
    var arr = [String]()
    let ref = Database.database().reference()
    let uid = Auth.auth().currentUser?.uid
    let prof = ref.child("users").child(uid!).child("interess")
    prof.observeSingleEvent(of: .value,with: { (snapshot) in
        if let dict = snapshot.value as? [String: Any] {
            let name = dict["FullName"] as! String
            arr.append(name)
            completion(arr)
        }
        else {
            completion(nil)
        }
    })

}
召唤


我有一个集合视图,在每个单元格中我都有一个标签,其中文本是数组[indexpath.row]的值,我隐藏了其他代码,因为我的问题是数组在callbackunder self.information.append中加载了集合。。。i write collectionview.reloadData()尝试编辑它应该刷新集合,旧的重新加载会在结果返回之前运行
loadinformation { (result) in
  print(result)
  if let content = result {
    self.information = content 
    self.collectionView.reloadData()
  }
}