如何创建NSPredicate查询Core Data中关联最新Note的Address实体
解决方案:筛选关联最新Note文本匹配的Address实体
要查询所有关联的最新Note文本包含指定短语的Address实体,可以通过SUBQUERY结合聚合函数MAX构建NSPredicate,精准定位每个Address下的最新Note并判断匹配条件:
let predicate = NSPredicate(format: "SUBQUERY(notes, $note, $note.date == MAX(notes.date) AND $note.text CONTAINS [cd] %@).@count > 0", phrase)
代码逻辑说明
SUBQUERY(notes, $note, ...):遍历当前Address关联的所有Note实体,$note为遍历变量$note.date == MAX(notes.date):筛选出当前Address下date属性最大的最新Note$note.text CONTAINS [cd] %@:判断该最新Note的文本是否包含指定短语,[cd]表示忽略大小写和重音@count > 0:确保子查询返回非空结果,即当前Address存在符合条件的最新Note
注:如果Address未关联任何Note,该Predicate会自动排除这类实体,因为MAX(notes.date)会返回nil,条件不成立。
内容的提问来源于stack exchange,提问作者kunass2
相关产品推荐
相关产品推荐

