Swift 4 完成处理程序:数组保持为空
Swift 4 completion handler: Array remains empty
我试图在从 Firebase 获取用户时填充一个数组。当我设置断点时,我可以看到所有用户都附加到数组中,但是当调试器完成后,数组再次为空。
func firebaseRequest(completionHandler: @escaping (Result<[User], Error>) -> Void) {
var tempFirebaseUsers = [User]()
self.firebaseFunctions.fetchUsers { (userFB, error) in
if let user = userFB {
print("User: ", user)
tempFirebaseUsers.append(user)
} else if let error = error{
completionHandler(.failure(error))
return
}
}
completionHandler(.success(tempFirebaseUsers))
return
}
您调用完成处理程序的时间过早。当你的 completionHandler(.success(tempFirebaseUsers))
运行 时,tempFirebaseUsers.append(user)
还没有 运行。
要解决此问题,请将对完成处理程序的调用移至回调中:
func firebaseRequest(completionHandler: @escaping (Result<[User], Error>) -> Void) {
var tempFirebaseUsers = [User]()
self.firebaseFunctions.fetchUsers { (userFB, error) in
if let user = userFB {
print("User: ", user)
tempFirebaseUsers.append(user)
completionHandler(.success(tempFirebaseUsers))
} else if let error = error{
completionHandler(.failure(error))
return
}
}
return
}
我试图在从 Firebase 获取用户时填充一个数组。当我设置断点时,我可以看到所有用户都附加到数组中,但是当调试器完成后,数组再次为空。
func firebaseRequest(completionHandler: @escaping (Result<[User], Error>) -> Void) {
var tempFirebaseUsers = [User]()
self.firebaseFunctions.fetchUsers { (userFB, error) in
if let user = userFB {
print("User: ", user)
tempFirebaseUsers.append(user)
} else if let error = error{
completionHandler(.failure(error))
return
}
}
completionHandler(.success(tempFirebaseUsers))
return
}
您调用完成处理程序的时间过早。当你的 completionHandler(.success(tempFirebaseUsers))
运行 时,tempFirebaseUsers.append(user)
还没有 运行。
要解决此问题,请将对完成处理程序的调用移至回调中:
func firebaseRequest(completionHandler: @escaping (Result<[User], Error>) -> Void) {
var tempFirebaseUsers = [User]()
self.firebaseFunctions.fetchUsers { (userFB, error) in
if let user = userFB {
print("User: ", user)
tempFirebaseUsers.append(user)
completionHandler(.success(tempFirebaseUsers))
} else if let error = error{
completionHandler(.failure(error))
return
}
}
return
}