所以在我的FirebaseApp.configure函数中有application didFinishLaunchingWithOptions。如果我一遍又一遍地运行和停止模拟器,它有时会崩溃,说:
终止应用程序的原因是:“(子:)”必须是非空字符串,且不包含“.”#“$”或“'‘”。
我做了我的研究,here和here。两人都说这是因为我试图在配置完成之前访问数据库。前者一般比后者更好,但有时仍然会崩溃,但经常会崩溃。
我的应用程序所做的是,如果用户之前已经登录,它会自动转到默认的启动视图,在该视图中,它通过以下操作访问viewDidLoad中的Firebase数据库:
let messageDB = Database.database().reference().child("Messages")只是在做:
let rootDB = Database.database().reference()很好,但是第一个撞坏了.但我需要第一个进入那个特定组的人。还有别的办法来解决这个问题吗?
编辑
下面是已登录时进入默认视图的代码:
let mainStoryBoard = UIStoryboard(name: "Main", bundle: nil) // Get Main Storyboard
let page = mainStoryBoard.instantiateViewController(withIdentifier: "groups") as! GroupsViewController // Cast main storyboard as GroupsViewController
if let username = UserDefaults.standard.object(forKey: "username") {
page.username = username as! String // Set saved username
}
window?.rootViewController = page // Set root view controller
window?.makeKeyAndVisible()发布于 2018-03-30 05:49:14
我发现问题了!它就在这里:
if let username = UserDefaults.standard.object(forKey: "username") {
page.username = username as! String // Set saved username
}我使用username字段从数据库中获取当前用户的信息,而且由于用户名字段是在视图控制器实例化之后设置的,因此在设置用户名时会出现在firebase引用之后的一些情况,因此它将搜索ref.child("").value()。
https://stackoverflow.com/questions/49567246
复制相似问题