有没有办法一次针对多个实体执行NSPredicate
请求?
我有十几个实体,每个实体都有一个hasChanged
字段,我需要检查这些实体是否有任何改变,除了单独执行每个实体(比如我在下面做的)是否有更好的方法/方法?
let entityName = "Work"
var request = NSFetchRequest(entityName: entityName)
request.predicate = NSPredicate(format: "hasChanged ==", true)
答案 0 :(得分:2)
实现这一目标的唯一方法是使用实体继承。创建一个抽象类,并将其定义为要检查的所有实体的父级。为此抽象类提供hasChanged
属性,并从实体类中删除该属性。
通过这种方式,您可以在抽象实体上执行NSFetchRequest并检索所有实体'对象。
let entityName = "YourAbstractEntity"
var request = NSFetchRequest(entityName: entityName)
request.predicate = NSPredicate(format: "hasChanged == true")
然而,这是一个缺点。该抽象实体的所有实例都将放在数据库的同一个表中。您保存的实体(以及这些实体的实例)越多,数据库的性能就越低。