【发布时间】:2010-09-03 01:10:42
【问题描述】:
我正在构建一个具有 chatView 的社交应用程序。消息是一个实体。在 usersViewController (rootViewController) 上,我只想显示来自每个用户的未读消息数。但是在 chatView 上,我想显示我和所选用户之间发送的消息。
我应该如何从 Core Data 中获取消息?
有没有办法以 userIds 作为键将它们全部提取到 NSMutableDictionary 中,每个都指向消息实体的 NSMutableArray?或者,我是否必须获取所有消息,然后使用 Objective-C 遍历它们以按描述排列它们?
无论哪种方式,我都应该在 appDelegate 中预先加载它们吗?或者,我应该只在查看相应的聊天视图时加载特定对话的消息吗?
要获得未读计数,我是否应该遍历获取的消息实体以创建指向计数值的用户 ID 键的 NSMutableDictionary?或者,我应该创建一个类似于按 userId 分组的 SQL 总和查询的谓词(Core Data 甚至可能吗?)?
我是否应该创建一个模型,将其命名为
UnreadMessageCount,用于存储我从每个用户收到的未读消息的数量以及对User模型的引用?我想在应用程序的第一页上显示所有未读消息,这样可以加快查询速度。但是接收消息会更慢,因为我不仅需要将其添加到 Message 模型中,而且还必须在 UnreadMessageCount 模型中增加该用户的计数。此外,数据会有点重复。此外,每次应用程序启动时,我只会查询所有消息计数一次,但每次收到新消息并且不在该用户的 chatView 页面上时,我都会进行查询以更新未读消息计数。
请填写 iPhone 内存管理和核心数据的可能性和性能。另外,请就设计此功能的最佳方式发表您的意见。
谢谢!
马特
【问题讨论】: