ios - 使用 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 
        P1.userid = P2.userid AND P2.out = 1)

我似乎无法将 NSPredicate 翻译成工作

最佳答案

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

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

关于ios - 使用 NSFetchRequest 查找每个用户最反感的条目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24592295/

相关文章:

iphone - 在不更改 Core Data 对象的情况下修改 NSFetchRequest 结果数组的正确方法

ios - 使用 map 注释而不是表格 View 中的行来引用所选对象

Mysql子查询group by错误

mysql - MySQL 中的错误 "Every derived table must have its own alias"是什么?

MySQL INSERT ...SELECT 与 SUBQUERY

ios - 从存档构建时 CADisplayLink 断断续续

ios - 将 MKMap 分解为图 block ——图 block 太小

iphone - 增加/减少 UIImageView 的亮度

iphone - 将音频文件保存到 NSURL

iphone - 核心数据多线程 - View Controller 未更新