1

我一直在使用 Core Data 数据库,它设置为使用以下代码从数据库中加载一些数据:

NSManagedObjectContext *context = [self managedObjectContext];
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"AssignmentsInfo" inManagedObjectContext:context];
[fetchRequest setEntity:entity];
NSError *error;
NSArray *dataReturn = [context executeFetchRequest:fetchRequest error:&error];
dataSet = dataReturn;

NSFetchRequest *fetchRequestSubjects = [[NSFetchRequest alloc]init];
NSEntityDescription *entitySubjects = [NSEntityDescription entityForName:@"Subjects" inManagedObjectContext:context];
[fetchRequestSubjects setEntity:entitySubjects];
NSError *errorSubjects;
NSArray *subjectList = [context executeFetchRequest:fetchRequestSubjects error:&errorSubjects];

但是运行此代码会返回错误:

 *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'executeFetchRequest:error: A fetch request must have an entity.'

*第一掷调用堆栈:(0x16b1022 0x1842cd6 0xed3871 0x599a 0xe3a1e 0xe2fec 0x109f1d 0xf41cb 0x10adf1 0x10ae0d 0x10aea9 0x496f5 0x4973c 0x1a596 0x1b274 0x2a183 0x2ac38 0x1e634 0x159bef5 0x1685195 0x15e9ff2 0x15e88da 0x15e7d84 0x15e7c9b 0x1ac65 0x1c626 0x32ed 0x2385为0x1)终止叫做抛出异常(LLDB)

我不太确定为什么会发生此错误。我进行了三次检查,并且我拥有的 xcode 模型中没有拼写错误。managedObjectContext 也可以正常工作。谢谢您的帮助

4

5 回答 5

2

尝试:
1. Debug 看看entitySubjects是不是nil
2. 试试 Product->Clean, Product->Build 然后再运行,如果没有帮助
3. 如果你添加了新的模型版本,你可能忘记设置了作为“当前版本”,如果不是这种情况
4.您的数据可能已损坏,请尝试删除它并再次运行
5.最后一次尝试是再次重新创建您的模型,可能出现问题...

于 2012-06-01T09:29:36.057 回答
1

确保您的 managedObjectContext 不是nil

于 2012-06-01T23:17:45.030 回答
0

好吧,似乎其中一个或两个调用[NSEntityDescription -entityForName:...]都返回 nil。

可能是您的数据模型未在托管对象上下文中正确加载或设置。

于 2012-06-01T09:39:55.233 回答
0

如果您更改了其中一个属性/实体的名称并尝试从设备上删除应用程序,则可能会出现此错误。一个好的解决方法是从设备上删除应用程序并在再次构建和运行应用程序之前清理项目。只需确保在您的应用上线后迁移您的数据,而不是用简单的方式进行更改。

另一种可能性是您可能正在尝试对您的请求使用未按照您的想法设置的谓词,例如我有这个:

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"id == %@", UserId];

当我的 dataModel 将该字段设置为“objectId”时。确保它们匹配。祝你好运

于 2014-02-13T23:54:17.757 回答
0

在我的情况下,经过多次恶化,我发现在数据模型配置中分配给实体的类已被删除。输入类的名称消除了错误。

于 2017-03-04T16:29:05.707 回答