我想从Firebase中获取数据并将其作为Swift数组中的对象添加,但是每当我运行应用程序时数组都会输出空白。当我在观察内部放置一个print
声明时,每个钱包都会打印出我想要的样子,但钱包永远不会附加到数组中。使用Firebase字典在Swift中填充数组
var purses = [Purse]()
override func viewDidLoad() {
fetchPurse(completion: {print(self.purses.count)})
}
func fetchPurse(completion: @escaping() ->()){
let ref = FIRDatabase.database().reference(fromURL: "https://test-database-ba3a2.firebaseio.com/")
let user = (FIRAuth.auth()?.currentUser?.uid)!
let userRef = ref.child("users").child(user).child("devices")
userRef.observe(.childAdded, with: { (snapshot) in
if let dictionary = snapshot.value as? [String: AnyObject]{
let purse = Purse()
purse.setValuesForKeys(dictionary)
self.purses.append(purse)
completion()
}
}, withCancel: nil)
}
你在哪里试图打印数组?您正在将数组填充到异步函数中,因此如果您尝试在完成处理程序之外观察它的值,则很可能在数组填充之前先打印该数组。 –
我正在调用不同函数中的数组,并试图使用.count方法根据有多少钱包为我的表视图加载一定数量的表格单元格。 –
fetchPurse()应该有一个完成处理程序,你应该从完成处理程序调用你的其他函数。 –