我正在实现一个应用程序,其中我有一堆不同的实体,我从一个基本模型继承,这是所有这些实体共有的。目前让我说我有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获取多个不同的实体?我唯一的选择是只根据父类获取所有对象,然后使用类名过滤?我宁愿不这样做,但如果这是唯一的出路,我想我不得不吮吸并使用它。会不会感谢任何建议或提示(我确实阅读了其中一个帖子,其中一个人建议将父类声明为抽象实体并使用它来进行提取)
谢谢, 拉詹
答案 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]];
}
在创建获取请求之前,请确保所有实体名称都正确。