我在Channel
和Message
之间存在多对多的关系,即一个频道可以有多条消息,而一条消息只属于一个频道。我想有效地获取最后一条消息和频道。请注意,频道可能包含大量邮件。我可以想到几个不同的选择:
NSOrderedSet
不支持像Set这样的泛型。我还读到Core Data,Xcode和Swift中有序关系的组合总体上有一些怪癖,所以不确定。为了进一步扩展这个问题,如果我想获取最后n条消息而不是最后一条消息,那么建议的方法是什么?
非常感谢!
答案 0 :(得分:1)
我认为你的选择2是最坚实的选择。您可以使用一些技巧来确保有效获取,因此我认为您不会遇到任何性能问题。
选项3也是可行的,也没有太大的努力。设置频道时,只需实施didSet
即可。但是,它并不是那么干净,也无法帮助你的最后一条消息"问题。
按日期排序是非常有效的。诀窍是在获取请求上设置适当的排序描述符,然后将fetchLimit
设置为n
,或者如果您要查找最后一条消息,则设置为1
。
请务必检查"未找到"或"发现少于n"错误条件并适当地处理它们。