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