2012-06-01 126 views
1

我一直在与核心数据数据库,并将其设置为装载一些数据出来使用下面的代码的数据库:核心数据错误executeFetchRequest:错误:

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 0 x1e634 0x159bef5 0x1685195 0x15e9ff2 0x15e88da 0x15e7d84 0x15e7c9b 0x1ac65 0x1c626 0x32ed 0x2385为0x1) 终止叫做抛出异常(LLDB)

我不明白为什么这个错误发生的事情。我有三重检查,并且在我的xcode模型中没有输入错误。 managedObjectContext也完美地工作。感谢您的帮助

+0

你有一个实体叫做科目?我问,因为看起来你更有可能拥有一个名为“主题”的实体,而另一个实体与“主题”有关系,称为“主题”。 – sosborn

+0

Nah我已经三重检查了名字。这绝对是科目 – CoreCode

+0

然后,你应该做什么格拉弗说。使用调试器。 – sosborn

回答

2

尝试:
1.调试,看看entitySubjectsnil
2.尝试产品 - >清洁,产品展示 - >打造然后再尝试运行时,如果它不能帮助
3。如果您添加了新的型号版本,则可能忘记将其设置为“当前版本”,如果情况并非如此
4.您的数据可能已损坏,请尝试删除并再次运行
5.最后一次尝试是再次重新创建你的模型,可能有什么问题...

0

那么看起来[NSEntityDescription -entityForName:...]的一个或两个调用返回nil。

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

1

确保您managedObjectContext非nil

0

如果你改变了你的属性/实体之一的名称,只是试图删除应用程序关闭设备的可能,你可以得到这个错误。一个很好的解决方法是从应用程序中删除应用程序,并在构建和再次运行应用程序之前清理项目。只需确保在应用程序启用后迁移数据,而不是简单地更改事物。

另一种可能是,你可能会尝试使用您的要求未设置你的思考方式的谓词,例如我有这样的:

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

当我的数据模型有这样的字段集作为“objectId”。确保它们匹配。祝你好运

0

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