2017-02-15 11 views
0

Привет всем Я создаю приложение для чата, используя firebase.crashing found nil в то время как разворачивание необязательное значение

Когда я нахожусь на экране, чтобы создать канал, он сработает, сказав, что нашел нуль, разворачивая необязательное значение. Если я вернусь в приложение, канал был создан, поэтому я предполагаю, что он находит нуль при смене viewcontrolers, и в базе данных для нового канала в сообщениях не должно быть ничего. ниже приведен код и где он сбой.

var channelRef: FIRDatabaseReference? 

private lazy var messageRef: FIRDatabaseReference = self.channelRef!.child("messages") 

тогда он выходит из строя здесь ...

private func observeMessages() { 
    messageRef = channelRef!.child("messages") 

эта функция вызывается на просмотр сделал нагрузки

+2

'channelRef' is' nil'. Когда вы разворачиваете его ('!'), Он сработает. Пожалуйста, прочитайте [Что приводит к непредсказуемой ошибке при неудачной ошибке при открытии необязательного значения значения] (http://stackoverflow.com/questions/32170456/what-does-fatal-error-unexpectedly-found-nil-while-unwrapping-an- optional-valu/32170457 # 32170457) – vadian

ответ

0

Вместо силы разворачивает вы должны использовать и if let так:

if let channelRef = channelRef { 
    messageRef = channelRef.child("messages") 
} //maybe add an else and do some logic if value is not there 

Или вы могли бы объявить var channelRef: FIRDatabaseReference!, если вы ожидаете его всегда быть там и быть такого типа

+0

Приветствия для вашего комментария Я пробовал решение, но затем он перемещает ту же ошибку выше первой части кода. var channelRef: FIRDatabaseReference? private lazy var messageRef: FIRDatabaseReference = self.channelRef! .child ("messages"), когда я нахожусь над собой, он показывает chanel ref как nil –

+0

, это 'nil', потому что выполнение' private lazy var messageRef: FIRDatabaseReference = self.channelRef ! .child («messages») 'не работает, поскольку' self.channelRef 'является' nil' в этой точке ... вам нужно сначала инициализировать это, а затем инициализировать 'messageRef', вы должны сделать только' var messageRef: FIRDatabaseReference! ' – John

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

  • Нет связанных вопросов^_^