2017-01-31 9 views
0

Я включить диск упорства Firebase в моем приложении, установив persistenceEnable истинногоpersistenceEnabled работает в тренажере, но поднять NSInternalInconsistencyException на устройстве

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool { 
    FIRApp.configure() 
    FIRDatabase.database().persistenceEnabled = true 
    return true 
} 

Когда я запустить приложение в iPhone имитатор все работы Xcode, как ожидалось, но когда я запускаю приложение на устройстве, я получаю исключение 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 = истинный

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool { 
    FIRApp.configure() 
    //FIRDatabase.database().persistenceEnabled = true 
    return true 
} 

приложение работает на моем устройстве, но, конечно, я освобождаю автономные возможности.

Я также пытался переместить FIRDatabase.database().persistenceEnabled = true, но каждый раз, когда я его использую, приложение разбилось при выполнении на iPhone.

Спасибо и приветствую.

ответ

1

TLDR; Я удаляю приложение с моего устройства и позволяю xCode устанавливать его новую копию и решить эту проблему.

Полный комментарий: После некоторых попыток воспроизвести проблему в другом проекте в течение нескольких часов без успеха я нашел решение.

Сообщение об ошибке не 100% ясно, но дает хороший ключ Unrecognized database version:

Поскольку приложение было только сбой на моем устройстве, когда persistenceEnabled был установлен в true я понял, этот вопрос должен быть связан с локальной базой данных кэш.

Я удаляю приложение с моего устройства и позволяю xCode устанавливать его новую копию и решить эту проблему.

Как-то локальный кэш Firebase должен был быть поврежден, и каждый раз, когда sdk Firebase пытался получить к нему доступ, мое приложение разбилось.

Я надеюсь, что это может помочь кому-то, стоящему перед тем же вопросом несколько дней.

Смежные вопросы