Ios 快速简便地查询核心数据中的所有实体

Ios 快速简便地查询核心数据中的所有实体,ios,swift,core-data,Ios,Swift,Core Data,是否有一种方法可以同时对多个实体执行NSPredicate请求 我有十几个实体,每个实体都有一个hasChanged字段,我需要检查这些实体中是否有任何一个已经更改,除了分别执行每个实体(如我下面所做的)之外,还有更好的方法/途径吗 let entityName = "Work" var request = NSFetchRequest(entityName: entityName) requ

是否有一种方法可以同时对多个实体执行
NSPredicate
请求

我有十几个实体,每个实体都有一个
hasChanged
字段,我需要检查这些实体中是否有任何一个已经更改,除了分别执行每个实体(如我下面所做的)之外,还有更好的方法/途径吗

                    let entityName = "Work"
                var request = NSFetchRequest(entityName: entityName)
                request.predicate = NSPredicate(format: "hasChanged ==", true)

实现这一点的唯一方法是使用实体继承。创建一个抽象类,并将其定义为要检查的所有实体的父类。为这个抽象类赋予
hasChanged
属性,并从实体类中删除该属性

通过这种方式,您可以对抽象实体执行NSFetchRequest并检索所有实体的对象

let entityName = "YourAbstractEntity"
var request = NSFetchRequest(entityName: entityName)
request.predicate = NSPredicate(format: "hasChanged == true")

然而,也有不利的一面。该抽象实体的所有实例都将放在数据库的同一个表中。保存的实体(以及这些实体的实例)越多,数据库的性能就越差。

ahh但是每个实体上都有hasChanged属性,我需要检查这一点。当抽象实体具有“hasChanged”属性时,所有继承实体也将具有此属性。我上面给出的代码涵盖了所有继承实体,其“hasChanged”属性设置为“true”。这很有意义,我如何设置抽象实体?我知道我可以在数据模型编辑器中勾选“抽象实体”框,但除此之外,我有点不知所措,比如,我需要定义任何关系吗?但是看到这个问题,这表明,让您的所有实体从抽象类继承可能会产生性能问题,否则可能不是一个好主意:。@fr0s1yjack:您需要知道的所有信息都可以找到并保存。这很容易。