Closed. This question needs to be more focused。它目前不接受答案。
想改进这个问题吗?更新问题,使其只关注一个问题editing this post
两年前关闭。
如何在不使用“DispatchQueue”的情况下处理异步查询,请参见以下内容:
let when = DispatchTime.now() + 2
 DispatchQueue.main.asyncAfter(deadline: when){}

这是firebase登录的示例
LogInViewController
FirebaseLogIn

最佳答案

在您的FirebaseLogIn文件中,您实际上已经创建了一个DataSentDelegateLogIn委托,它将执行您所要执行的操作,并且您已经在FirebaseLogIn回调函数中的FIRAuth.auth()?.signIn类中正确实现了它。这很好,现在您只需在LogInViewController中实现delegate方法。
LogInViewController中,将FirebaseLog.delegate = self移到viewDidLoad()方法中,并从Dispatch函数中删除所有logInBTN(_ sender: Any)代码。然后,在userEnterData(data: Bool)中实现LogInViewController委托方法:

func userEnterData(data: Bool) {
    if data
        // handle successful login
    else {
        // handle unsuccessful login
    }
}

代表简介,from this great explaination by James Rochabrun
委托是一种设计模式,允许一个对象在发生特定事件时向另一个对象发送消息。
所以当FirebaseLogIn调用userEnterData委托方法时,调用的是LogInViewController中的实现。整洁!
(下次你问堆栈溢出问题时,请将你的代码作为代码复制到你的问题中,而不是屏幕截图。谢谢!)

关于ios - iOS Firebase异步登录,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45805487/

10-10 22:32