2016-08-12 69 views
0

我目前正在使用Firebase开发聊天应用程序。 Firebase离线功能效果很好。目前我对CoreData没有任何认识,但我开始学习。我的应用程序的工作原理,方式是这样的:Firebase聊天应用程序(使用CoreData改进UX)

你写一个消息

- >它进入火力 - >更新集查看

我遇到的问题,有时我有一个非常缓慢的连接,所以,该消息需要一段时间才能进入收集视图。

我想我喜欢这个程序工作:

写一个消息 - >去的CollectionView第一 - >然后去火力点 - 根据消息>更新标签与“已发送”

现在时我这样做,消息发送到collectionView,然后firebase被触发,并复制消息。

如果我使用逻辑来阻止Firebase重复,则当我离开视图时,消息将丢失。

现在,我觉得我的问题唯一的解决办法是做这样的:

发送消息 - >放在coreData - >放的CollectionView - >放在火力 - >看到的消息来自firebase - >如果消息已经在coreData里面了,不会重复。

所以问题是,有没有更简单的方法来做到这一点有/无coredata?

如果我必须使用coredata,我应该关注什么,我读了一些我需要两个上下文的地方,一个父母和一个孩子,一个使用UI在主队列上工作,另一个作品在后台从firebase获取消息,我是在正确的轨道上? (对不起,没有经验的长问题)

回答

-2

而不是核心数据,你可以将消息存储到一个单例作为一个数组。 在我的情况下,它的工作速度非常快,并且没有延迟使用Firebase聊天的问题。 我相信你必须使用JSQMessagesViewController作为聊天视图。

+1

我不建议将消息​​存储在内存中的数组中 - 那么您必须手动管理该数组的长度,然后将其丢弃,缓存或以其他方式将消息存储到更永久的数据库中。 CoreData虽然具有挑战性,但却是为这样的事情设计的。 – brandonscript

+0

然后尝试这种方式。您只在聊天视图中显示10条消息。并且将消息存储在内存中根本不占用如此巨大的内存。您只需将图片,视频存储在设备上,其他信息只是一个文本,并不需要如此巨大的内存。如果它不符合你的要求,你也可以使用CoreData。 CoreData不难使用。 –

+1

这是一个_question_不是答案 - 当然不是一个解决方案;) – brandonscript