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()
}
}