此函数返回空数组有什么原因吗?我已经通过调试器运行它,for 循环正在工作,并将用户附加到 newUsers 数组中,但当它完成并返回值时,它是空的。
func fetchUsers(ref:FIRDatabaseReference) -> [User] {
var newUsers = [User]()
ref.observeEventType(.Value, withBlock: {snapshot in
for user in snapshot.children {
let users = User(snapshot: user as! FIRDataSnapshot)
newUsers.append(users)
}
})
print("closure exited. There are \(newUsers.count) Users in newUsers")
return newUsers
}
最佳答案
使用完成,因为您处于异步 block 中。试试这个
func fetchUsers(ref:FIRDatabaseReference, completion(users: [Users])) {
var newUsers = [User]()
ref.observeEventType(.Value, withBlock: {snapshot in
for user in snapshot.children {
let users = User(snapshot: user as! FIRDataSnapshot)
newUsers.append(users)
}
print("closure exited. There are \(newUsers.count) Users in newUsers")
completion(users: newUsers)
})
}
关于swift - 无返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38086503/