【问题标题】:Using NSFetchRequest to find each users most resent entries使用 NSFetchRequest 查找每个用户最反感的条目
【发布时间】:2014-07-06 02:53:09
【问题描述】:

我在 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)

我似乎无法翻译到 NSPredicate 来工作

【问题讨论】:

    标签: ios core-data subquery nspredicate nsfetchrequest


    【解决方案1】:

    虽然 Core Data 可以使用 SQLite 作为数据存储,但它无法 100% 地利用 SQL 查询的功能和灵活性。如果您想考虑表和子查询,那么您应该直接使用 SQL。如果你想根据对象和关系来工作,那么你应该改变你的方法。

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

    【讨论】:

    • 感谢您的回复,实际上我最终在 Objective-C 中过滤了结果后查询,因为我知道该表不会包含超过几千行
    猜你喜欢
    • 2020-03-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-04
    • 2023-03-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多