Ошибка NSException - Swift 4

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

В настоящее время у меня есть некоторый код, который позволяет пользователю отправлять сообщения группе, а также изменять эскиз и заголовок группы. Однако, когда пользователь делает что-либо из этого, мой код падает. Я храню свои данные в базе данных (данные успешно загружаются). Проблема началась, когда я обновил swift 3 до swift 4. Кроме того, это конкретная ошибка, которую я получаю:

libc++abi.dylib: terminating with uncaught exception of type NSException

Вот некоторые решения / методы, которые я пытался решить, чтобы решить мою проблему:

  1. Я сказал, что это проблема розетки, поскольку контроллер представления создается программно.
  2. Я попытался добавить точку останова исключения, но она не показала мне никаких конкретных строк кода для места, где произошел сбой.
  3. Я также попытался очистить, перестроить и закрыть XCode, однако это не работает.
  4. Я не думаю, что это проблема с загрузкой данных в Firebase, как я могу в других частях моего приложения.
  5. Я также попытался прокрутить потоки, чтобы получить более глубокое понимание того, где происходит сбой, однако это не сильно помогло.

Вот изображение моего вывода на консоль: Основной поток пользовательского интерфейса, вводимый в консоль, не вызывается сбоем. Единственный выход, вызванный сбоем, - это сообщение об ошибке выше

Вот код, который я использую для обновления представления коллекции:

func observeConversationMessagesWithConversationId(conversationId: String) {
    Database.database().reference().child("conversation-messages").child(conversationId).observe(.childAdded, with: { (snapshot) in
        if let messages = ConversationMessages(snapshot: snapshot) {

            self.conversationMessages.append(messages)

            DispatchQueue.main.async(execute: {
                self.collectionView?.reloadData()

                let indexPath = NSIndexPath(item: self.conversationMessages.count - 1, section: 0)
                self.collectionView?.scrollToItem(at: indexPath as IndexPath, at: .bottom, animated: true)
            })
        }
    }, withCancel: nil)
}

Вот мой подфайл

Любая помощь будет оценена. Пожалуйста, обратите внимание, что я добавил бы некоторый код, но я понятия не имею, где происходит ошибка.

1 ответ

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

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

Если это ваш случай, вы можете найти более подробную информацию здесь.

Удачи на охоте

Другие вопросы по тегам