计数查询核心数据谓词
Count query Core Data predicate
我有一个名为 schedule 的实体,它有很多警报(其他实体),我只想获得未来警报少于 30 个的计划。到处搜索我得到那个查询不起作用 /:
let predicateFutureAlarms = NSPredicate(format: "(alarms.date > %@).@count < 30", NSDate().timeIntervalSince1970)
(在 运行 时间 a (lldb) 出现在控制台上并指定该变量的初始化)
至少有两个问题:
"(alarms.date > %@).@count < 30"
不是有效的谓词语法。
%@
占位符需要一个对象,但是NSDate().timeIntervalSince1970
是一个浮点数字。
我目前无法测试它,但像这样的东西应该可以工作:
let now = NSDate()
let predicate = NSPredicate(format: "SUBQUERY(alarms, $a, $a.date > %@).@count < 30", now)
对于每个 Schedule
对象,SUBQUERY(...)
计算所有相关的 alarms
对象
date
大于 now
。
有关谓词的一般说明,请参阅 "Predicate Format String Syntax"
句法。 "SUBQUERY" 表达式的文档很少,
比较 NSExpression
class reference or Quick Explanation of SUBQUERY in NSPredicate Expression.
我有一个名为 schedule 的实体,它有很多警报(其他实体),我只想获得未来警报少于 30 个的计划。到处搜索我得到那个查询不起作用 /:
let predicateFutureAlarms = NSPredicate(format: "(alarms.date > %@).@count < 30", NSDate().timeIntervalSince1970)
(在 运行 时间 a (lldb) 出现在控制台上并指定该变量的初始化)
至少有两个问题:
"(alarms.date > %@).@count < 30"
不是有效的谓词语法。%@
占位符需要一个对象,但是NSDate().timeIntervalSince1970
是一个浮点数字。
我目前无法测试它,但像这样的东西应该可以工作:
let now = NSDate()
let predicate = NSPredicate(format: "SUBQUERY(alarms, $a, $a.date > %@).@count < 30", now)
对于每个 Schedule
对象,SUBQUERY(...)
计算所有相关的 alarms
对象
date
大于 now
。
有关谓词的一般说明,请参阅 "Predicate Format String Syntax"
句法。 "SUBQUERY" 表达式的文档很少,
比较 NSExpression
class reference or Quick Explanation of SUBQUERY in NSPredicate Expression.