从同一个Core Data Database中获取多个不同的实体

时间:2013-12-02 20:36:54

标签: ios entity-framework core-data

我正在实现一个应用程序,其中我有一堆不同的实体,我从一个基本模型继承,这是所有这些实体共有的。目前让我说我有EntityParent谁是我的基类,我有大约5个不同的实体继承基类。假设我分别有EntityA,EntityB,EntityC,EntityD和EntityE,目前我从数据库中获取EntityA,我也想获取其他实体,如下所示:

NSManagedObjectContext *context = _managedObjectContext;

NSFetchRequest * fetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription* entityDiscA = [NSEntityDescription entityForName:@"EntityA" inManagedObjectContext:context];
[fetchRequest setEntity:entityDiscA];

NSError* error;

NSArray *fetchedAs = [context executeFetchRequest:fetchRequest error:&error];


NSFetchRequest * fetchRequestB = [[NSFetchRequest alloc] init];
NSEntityDescription* entityDiscB = [NSEntityDescription entityForName:@"EntityB" inManagedObjectContext:context];
[fetchRequestB setEntity:entityDiscB];

NSError* error;

NSArray *fetchedBs = [context executeFetchRequest:fetchRequestB error:&error];

但我想获取EntityB和EntityC等等,但是当我尝试获取我的应用程序崩溃时。如果你查看上面的代码,当我尝试获取EntityB时,我得到一个SigAbort并崩溃。上面的代码片段有什么问题?我们是否不允许使用Core Data获取多个不同的实体?我唯一的选择是只根据父类获取所有对象,然后使用类名过滤?我宁愿不这样做,但如果这是唯一的出路,我想我不得不吮吸并使用它。会不会感谢任何建议或提示(我确实阅读了其中一个帖子,其中一个人建议将父类声明为抽象实体并使用它来进行提取)

谢谢, 拉詹

1 个答案:

答案 0 :(得分:0)

只需逐个获取所有实体。你可以简单地循环。

NSMutableArray *allOfThem = [NSMutableArray array];
for (NSString *entitySuffix in @[@"A", @"B", @"C", @"D", @"E"]) {
   NSString *entity = [NSString stringWithFormat:@"%@%@", @"Entity", entitySuffix];
   NSFetchRequest *request = [NSFetchRequest fetchRequestWithEntityName:entity];
   [allOfThem addObjectsFromArray:
      [context executeFetchRequest:request error:nil]];
}

在创建获取请求之前,请确保所有实体名称都正确。