【发布时间】:2017-10-13 01:31:11
【问题描述】:
堆栈溢出社区。请不要将此问题标记为重复问题,因为我已经看过所有其他有关此问题的帖子,并且几乎经历了大多数著名的解决方案。
目前,我有一些代码允许用户向群组发送消息并更改群组缩略图和标题。但是,在用户执行任何此操作时,我的代码会崩溃。我将我的数据存储在 firebase 中(数据正在成功上传)。当我从 swift 3 升级到 swift 4 时,问题就开始了。另外,这是我得到的具体错误:
libc++abi.dylib: terminating with uncaught exception of type NSException
以下是我尝试解决问题的一些解决方案/方法:
- 我已经排除这是一个出口问题,因为视图控制器是以编程方式创建的。
- 我尝试添加异常断点,但它没有显示崩溃发生位置的任何特定代码行。
- 我也尝试过清理、重建和关闭 Xcode,但效果不佳。
- 我认为将数据上传到 firebase 不会有问题,因为我可以在应用程序的其他部分上传数据。
- 我还尝试滚动浏览线程以更深入地了解崩溃发生的位置,但这并没有太大帮助。
这是我用来更新集合视图的代码:
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)
}
这是我的 podfile
任何帮助将不胜感激。请注意,我会添加一些代码,但我不知道错误发生在哪里。
【问题讨论】:
-
你能显示截图错误信息吗?它在控制台中说什么?
-
我刚刚发布了一个截图。请阅读标题以进一步了解控制台输出。
-
好吧,我的理解是您正在后台线程上更新您的 UI,就像在某些回调中您正在更改您的 UI,请检查您的代码
-
是的,我确实改变了我的用户界面。发送消息时,我会更新集合视图以显示该消息。如果用户将第一条消息发送到该组,则它可以正常工作。但是,如果它是第二个以外的任何消息,则会崩溃
-
你能出示一下代码吗?
标签: ios firebase xcode9 swift4 nsexception