Ios 使用NSFetchRequest查找每个用户最新的条目

Ios 使用NSFetchRequest查找每个用户最新的条目,ios,core-data,subquery,nspredicate,nsfetchrequest,Ios,Core Data,Subquery,Nspredicate,Nsfetchrequest,我在iOS上使用CoreData来存储ping,每个条目都有| userid、timestamp、outgoing | 我想使用NSFetchRequest获取每个用户最新的“传出”条目(每个用户一个) SQL语法看起来像 SELECT * FROM 'Pings' AS P1 WHERE P1.out = 1 AND P1.timestamp = (SELECT MAX(timestamp) FROM Pings AS P2 HAVING

我在iOS上使用CoreData来存储ping,每个条目都有| userid、timestamp、outgoing |

我想使用NSFetchRequest获取每个用户最新的“传出”条目(每个用户一个)

SQL语法看起来像

    SELECT * FROM 
      'Pings' AS P1 WHERE P1.out = 1 AND P1.timestamp = 
      (SELECT MAX(timestamp) FROM 
        Pings AS P2 HAVING 
        P1.userid = P2.userid AND P2.out = 1)

虽然核心数据可以使用SQLite作为数据存储,但我似乎无法将NSPredicate的转换工作正常进行,因为它无法充分利用SQL查询的100%功能和灵活性。如果您想从表和子查询的角度考虑问题,那么应该直接使用SQL。如果你想在对象和关系方面工作,那么你应该改变你的方法


具体地说,当您添加新的传出ping时,将用户对象与其
lastPing
对象之间的现有关系替换为刚刚创建的新ping。现在,要查询项目,您只需查询您感兴趣的用户并从关系中读取ping。

感谢您的回复,我实际上在Objective-C中过滤了查询后的结果,因为我知道该表不会包含超过几千行的内容