Ios 核心数据给出错误

Ios 核心数据给出错误,ios,xcode,core-data,Ios,Xcode,Core Data,我正在处理核心数据,并试图让它用一个简单的数据模型显示数据。应用程序崩溃并向我显示此错误消息 由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:“+entityForName:nil不是合法的NSManagedObjectContext参数,正在搜索实体名称“提醒” 我不完全确定,但我怎么看,它是说它找不到我的实体提醒?然而,事实上我有一个叫做提醒的实体 我还设置了断点,它就停在这里: 任何帮助都将不胜感激。完全处于死胡同 App Delegate.m

我正在处理核心数据,并试图让它用一个简单的数据模型显示数据。应用程序崩溃并向我显示此错误消息

由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:“+entityForName:nil不是合法的NSManagedObjectContext参数,正在搜索实体名称“提醒”

我不完全确定,但我怎么看,它是说它找不到我的实体提醒?然而,事实上我有一个叫做提醒的实体

我还设置了断点,它就停在这里:

任何帮助都将不胜感激。完全处于死胡同

App Delegate.m中的托管上下文代码


这里的问题是您的访问者和ivar的名称相同。这就是《海底伊瓦尔公约》的由来。在这里,您没有使用访问器访问您的属性,而是直接使用支持变量,因此它永远不会被初始化。相反,请确保始终使用访问器方法,并且不会出现问题。因此,使用如下内容重写有问题的方法(以及使用
managedContextObject
属性的任何其他方法):

- (void)viewWillAppear:(BOOL)animated
{
  [super viewWillAppear:animated]; // it's good practice to call the super methods, even if you're fairly certain they do nothing

  // Get a reference to the managed object context *through* the accessor
  NSManagedObjectContext* context = [self managedObjectContext];

  // From now on, we only use this reference in this method
  NSFetchRequest = [[NSFetchRequest alloc] init];
  NSEntityDescription* entity = [NSEntityDescription entityForName:@"Remind" inManagedObjectContext:context]; // <- use the local reference we got through the accessor
  [request setEntity:entity];
  NSError* error = nil;
  NSArray* array = [context executeFetchRequest:request error:&error];
  if( !array ) {
    // Do something with the error
    NSLog(@"Error Fetching: %@", error);
  }
  [self setDesitnationsArray:[array mutableCopy]];
  [destinationsTableView reloadData];
}
-(void)视图将显示:(BOOL)动画
{
[超级视图将出现:动画];//调用超级方法是一种很好的做法,即使您相当确定它们什么都不做
//通过*访问器*获取对托管对象上下文*的引用
NSManagedObjectContext*上下文=[self-managedObjectContext];
//从现在起,我们在这个方法中只使用这个引用
NSFetchRequest=[[NSFetchRequest alloc]init];

NSEntityDescription*实体=[NSEntityDescription entityForName:@“提醒”inManagedObjectContext:context];//您的托管对象上下文为零。我假设它是一个ivar…它没有设置为任何值。谢谢您的回答。您能告诉我如何解决此问题吗?很遗憾,没有,否则我会将其放在答案中。您需要添加更多代码,这里没有足够的信息。您在视图控制器中的什么位置设置了此选项managedObjectContext ivar?老实说,我使用的是源代码。源代码运行得很好。它似乎不想与我的代码一起工作。我正在应用程序代理中设置它。我将编辑帖子,向您显示我的应用程序代理.m文件,我在其中设置它。不过它必须非常简单。谢谢您的回答。呵呵wever我确实像你一样将上面的代码更改为下面的代码,但它仍然给我同样的错误。@zack,那么从你的应用程序委托处获取它。你的问题是你的ivar为零,这是一个错误。你在该方法中实际上没有对托管对象上下文的引用。@Jasoncoo我也有同样的问题。上下文为零在我的情况下。你能告诉我如何从应用程序代理获得它吗?