使用 NSFetchRequest 查找每个用户最反感的条目
Posted
技术标签:
【中文标题】使用 NSFetchRequest 查找每个用户最反感的条目【英文标题】:Using NSFetchRequest to find each users most resent entries 【发布时间】: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 来工作
【问题讨论】:
【参考方案1】:虽然 Core Data 可以使用 SQLite 作为数据存储,但它无法 100% 地利用 SQL 查询的功能和灵活性。如果您想考虑表和子查询,那么您应该直接使用 SQL。如果你想根据对象和关系来工作,那么你应该改变你的方法。
具体来说,当您添加新的传出 ping 时,将用户对象与其lastPing
对象的现有关系替换为刚刚创建的新 ping。现在,要查询项目,您只需查询您感兴趣的用户并从关系中读取 ping。
【讨论】:
感谢您的回复,实际上我最终在 Objective-C 中过滤了结果后查询,因为我知道该表不会包含超过几千行以上是关于使用 NSFetchRequest 查找每个用户最反感的条目的主要内容,如果未能解决你的问题,请参考以下文章
NSFetchRequest 获取具有下一个最接近字符串属性的对象