ios - 函数在闭包完成之前返回 Firebase

标签 ios swift firebase

我正在使用 Firebase 存储数据,当我尝试使用他们的闭包函数检索数据时,总是在闭包完成之前完成并返回。在我的 HeyUser 类中,我试图在我的 Firebase 中获取 Friend 键中的值并将其存储在类属性中。但是,当尝试实例化类的对象时,实例化对象时没有获取 Friends 键的值。我想知道您是否能够延迟函数的实例化或完成,直到闭包完成。以下是我的 HeyUser 类的代码:

class HeyUser {
var Friends: [String] = [String]()
var username = PFUser.currentUser().username
var ref = Firebase()
var fRef = Firebase()

init() {
    self.ref = Firebase(url: "https://hey-chat.firebaseio.com/").childByAppendingPath("users").childByAppendingPath(PFUser.currentUser().username)
    self.fRef = self.ref.childByAppendingPath("friends")
    self.getFriends()
}

func getFriends() {
    self.fRef.observeSingleEventOfType(.Value, withBlock: { snapshot in
        self.Friends = snapshot.value as [String]
        print("TEST")
        print(self.Friends.count)
        })
}

最佳答案

我对 FireBase 不熟悉,并且仍在开始使用 Swift,但我可以告诉你这就是异步网络的工作方式。

您调用一个函数并传入一个 block (闭包)。该函数会立即返回,并在未来的某个日期,当网络事务完成时,框架(在本例中为 firebase)调用您的闭包。

在使用这个架构时你必须改变你的想法。您编写代码来发送请求,然后进入“待机模式”,等待请求完成。

关于ios - 函数在闭包完成之前返回 Firebase,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27551976/

相关文章:

xcode - 使用 Swift 的 TableViewController 和 CustomCell

swift - GameScene 中的 UIActivityViewController

android - Flutter 和 android studio 错误 : Google Play Store is missing

javascript - React Native Firebase 仅获取一项数据

javascript - 如何从嵌套函数中检索值

javascript - 如何处理 uiwebview 内的 Javascript onorientationchange 事件

ios - 我可以在 iOS 应用程序的 Documents 或 Library 目录中放置并访问静态库 (.a) 吗?

ios - 在GLKMatrixStack上使用投影矩阵

ios - 尝试 segue SWIFT 时出现 lldb 错误

ios - 尝试使用 NSUrl(fileURLWithPath) 捕捉