我是iOS开发的新手,来自Java世界,我完全不知道如何查询CoreData模型。
我正在尝试显示按邮件收件人分组的邮件列表,然后按最后一封邮件以及是否已读取邮件进行排序。例如在Android上,我将运行以下sql查询。
SELECT *, wm1.date_timestamp AS TimeSpent " +
"FROM messages wm1 " +
"JOIN ( " +
"SELECT *, MAX(date_timestamp) as dt " +
"FROM messages " +
"WHERE to_user = ?" +
" GROUP BY from_user " +
") wm2 ON wm1.from_user = wm2.from_user AND wm1.date_timestamp = wm2.dt " +
"ORDER BY wm1.is_read ASC, wm1.date_timestamp DESC
有人可以向我指出如何在iOS上产生类似内容的正确方向。
最佳答案
核心数据不是ORM。当人们从另一种语言过来时,这是头号困惑。
核心数据是一个可以保留在磁盘上的对象图,并且可以通过数据库保留在磁盘上的方法之一。
这很重要,因为您的问题是从数据库的角度出发的。
如果您需要访问以特定方式构建的特定数据库,则不应该使用Core Data。
如果您要启动一个全新的应用程序并且只是尝试以自己喜欢的方式使用Core Data,则应该停下来,将其视为对象图,然后重建模型以描述要使用的对象。当您这样做时,查询变得很容易。