我有一个ios应用程序连接到我的防火墙,在其中我有一个类,我已经定义了所有的链接到防火墙数据库。
AppDelegate.swift包含aa init()
方法,因此,Firebase是第一个被初始化的。
override init() {
super.init()
FirebaseApp.configure()
}
定义了所有DB路径的Firebase数据服务。
import Firebase
import FirebaseDatabase
let DB_URL: DatabaseReference = Database.database().reference()
let ST_URL: StorageReference = Storage.storage().reference()
let uid = Auth.auth().currentUser?.uid
class FBDataservice {
//... other code
}
现在,我一启动应用程序,就会发现一个错误
fatal error: unexpectedly found nil while unwrapping an Optional value
此错误发生在数据服务类中的uid定义上。
现在,据我所知,这是因为即使没有用户,也可以初始化uid。
关于如何实施这一点,我没有什么想法。在我的整个项目中,我有很多提到uid的地方。做这件事最合适的方法是什么。
谢谢
发布于 2017-10-28 14:18:13
您可能需要使用observeAuthEventWithBlock
。
若要侦听身份验证状态中的更改,请使用observeAuthEventWithBlock附加一个事件观察者。如果当前没有经过身份验证的用户,authData将为零。
您按照参考文献这样实现它
let ref = Firebase(url: "https://<YOUR-FIREBASE-APP>.firebaseio.com")
ref.observeAuthEventWithBlock({ authData in
if authData != nil {
// user authenticated
println(authData)
} else {
// No user is signed in
}
})
发布于 2017-10-28 14:43:33
我不太清楚你在哪里初始化你的代码。可能的解决办法:
guard let userID = Auth.auth().currentUser?.uid else {return}
if Auth.auth().currentUser?.uid != nil
pod update
FirebaseApp.configure()
中调用didFinishLaunchingWithOptions中的appDelegate并返回true。https://stackoverflow.com/questions/46995012
复制相似问题