我已将persistenceEnable设置为true,从而在我的应用中启用了Firebase的磁盘持久性
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
FIRApp.configure()
FIRDatabase.database().persistenceEnabled = true
return true
}
当我在xcode的iPhone模拟器中运行应用程序时,一切都按预期工作,但当我在设备上运行应用程序时,我得到一个NSInternalInconsistencyException。
*** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Unrecognized database version: '
*** First throw call stack:
(0x18e68d1b8 0x18d0c455c 0x18e68d100 0x10014323c 0x100143124 0x100154434 0x100de9258 0x100de9218 0x100df6aec 0x100decce0 0x100df7088 0x100df8e2c 0x100df8b78 0x18d71f2a0 0x18d71ed8c)
libc++abi.dylib: terminating with uncaught exception of type NSException
我真的不知道发生了什么。当附加'观察'时,看起来像抛出异常。听众
let ref = FIRDatabase.database().reference()
ref.child("usersEvents").child(userID!).observe(.value, with: { (snapshot) in
...
如果我评论persistenceEnabled = true
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
FIRApp.configure()
//FIRDatabase.database().persistenceEnabled = true
return true
}
该应用程序适用于我的设备,但当然我放弃了离线功能。
我还尝试移动FIRDatabase.database().persistenceEnabled = true
,但每次使用时,应用程序在iPhone上执行时都会崩溃。
谢谢和问候。
答案 0 :(得分:1)
<强> TLDR; 强> 我从我的设备中删除该应用程序,让xCode安装它的新副本,这解决了这个问题。
完整评论: 在一些尝试在其他项目中重现该问题几个小时没有成功之后,我找到了解决方案。
错误消息不是100%清除,但提供了一个很好的线索Unrecognized database version:
由于当persistenceEnabled
设置为true
时应用程序仅在我的设备上崩溃,我发现该问题必须与本地数据库缓存有关。
我从我的设备中删除该应用,让xCode安装它的新副本,这解决了这个问题。
不知何故,本地Firebase缓存必定已损坏,每次Firebase的sdk尝试访问它时,我的应用程序崩溃了。
我希望这可能会帮助某些人在某些日子里遇到同样的问题。