NSInvalidArgumentException',原因:'executeFetchRequest:错误:

Posted

技术标签:

【中文标题】NSInvalidArgumentException\',原因:\'executeFetchRequest:错误:【英文标题】:NSInvalidArgumentException', reason: 'executeFetchRequest:error:NSInvalidArgumentException',原因:'executeFetchRequest:错误: 【发布时间】:2014-03-12 22:09:46 【问题描述】:

由于未捕获的异常“NSInvalidArgumentException”,此代码导致崩溃并出现错误终止应用程序,原因:“executeFetchRequest:错误:获取请求必须具有实体。

self.devices = [[managedObjectContext executeFetchRequest:fetchRequest error:nil] mutableCopy];
NSLog(@"point one");
NSString *yourTrip=@"trip1";
NSFetchRequest *request = [[NSFetchRequest alloc] init];

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"thetrip== %@", yourTrip];

[request setEntity:[NSEntityDescription entityForName:@"thetrip" inManagedObjectContext:managedObjectContext]];

[request setPredicate:predicate];

NSError *error = nil;

NSArray *array = [managedObjectContext executeFetchRequest:request error:&error];
if (array == nil)

    NSLog(@"problemo");

崩溃具体发生在 NSError *error =nil; 之后。

【问题讨论】:

还有,您有一个名为thetrip 的实体吗?记录实体描述。 【参考方案1】:

我会改变你的

NSLog(@"problemo");

为了一个

NSLog(@"problemo %@", [error localizedDescription]);

为了获得有关错误内容的更多信息。

我认为(以及@Wain)您可能没有一个名为“thetrip”的实体(也许是theTrip?请注意Core Data 区分大小写)。带有本地化描述的日志将为您提供有关问题的一些提示。

【讨论】:

属性名称是 thetrip,我记录了本地化描述,它的值是 yourtrip (trip1),但我从来没有得到 NSLog(@"problemo %@", [error localDescription]);它在那之前就崩溃了。 如果模拟器中发生这种情况,请尝试从模拟器设备中删除应用程序,执行项目清理并再次尝试您的应用程序。 尝试了多次,它以完全相同的方式崩溃并出现错误***由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:“executeFetchRequest:错误:获取请求必须有一个实体。” 你能检查一下 self.devices = [[managedObjectContext executeFetchRequest:fetchRequest error:nil] mutableCopy];正在返回错误。也许这条线引发了异常。

以上是关于NSInvalidArgumentException',原因:'executeFetchRequest:错误:的主要内容,如果未能解决你的问题,请参考以下文章

将 JSON 作为参数传递 swift