gpt4 book ai didi

ios - 为当前用户 Firebase 创建静态变量?

转载 作者:行者123 更新时间:2023-11-28 06:08:12 24 4
gpt4 key购买 nike

在应用程序中进行身份验证后,我有多个 View Controller ,我需要在其中显示当前用户的个人资料图片、简历和一些其他信息。

我试图避免的问题是每次用户进入他们的设置页面时,我都不想去获取他们的简历/其他信息。

与其发送请求以在每个 View Controller 上获取该信息,不如在我进行身份验证时在我的用户类上创建一个“currentUser”的静态实例似乎是一个更好的主意,获取用户的信息,设置信息,然后进入应用程序并在我的整个应用程序中使用该变量进行调用和设置标签。

有什么理由不这样做吗?人们似乎建议不要使用静态变量,但在这种情况下,它似乎比每次我 segue 时都传递我的 currentUser 更干净。

感谢任何意见

最佳答案

最好谨慎使用单例,因为它们在您的数据流中是一种不规则现象。

也就是说,User 类的 currentUser 似乎完全符合这个标准。

如果您的数据设置正确,使用单例(测试等)的常见问题很容易处理,即使您的测试逻辑在单个 UIViewControllers 中,(即使我相信任何testable 不应该在 VC 中!)。为此,您应该为依赖注入(inject)/模拟设置您的 User 类,这样您就可以轻松地测试它。

这是我对设置良好的 User 单例的想法,它有助于稍后进行测试:

class YourUser {

var email: String?
let id: String

static var currentUser: YourUser?

}

我喜欢使用 Authinit 将当前用户设置为授权数据,

    /// Inits with a Firebase user, and sets the current user to fir user
///
/// - Parameter firUser: Firebase user
init(withAuthUser authUser: AuthUser) {

id = authUser.uid
email = authUser.email

YourUser.currentUser = self
}

AuthUser 只是我想要从 Auth 获取的数据的抽象(用于测试目的)。

protocol AuthUser: class {
var email: String? { get }
var uid: String { get }
}

extension User: AuthUser { }

关于ios - 为当前用户 Firebase 创建静态变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47559425/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com