'+ entityForName:nil不是合法的NSManagedObjectContext参数 - 核心数据

Ale*_*ere 72 xcode exception core-data objective-c ios

我已将所有相关代码添加到App Delegate中,并且我能够添加到数据模型并从applicationDidFinishLaunchingWithOptions中的数据模型中获取.

当我尝试在View Controller中写入数据模型时,我的问题出现了.我已将此代码添加到头文件中:

NSFetchedResultsController *fetchedResultsController;
NSManagedObjectContext *managedObjectContext;

@property (nonatomic, retain) NSFetchedResultsController *fetchedResultsController;
@property (nonatomic, retain) NSManagedObjectContext *managedObjectContext;
Run Code Online (Sandbox Code Playgroud)

这个代码到我的实现文件:

NSManagedObjectContext *context = [self managedObjectContext];
NSManagedObject *model = [NSEntityDescription
                          insertNewObjectForEntityForName:@"Events" 
                          inManagedObjectContext:context];
[model setValue:@"Sample Event" forKey:@"eventName"];

NSError *error;
if (![context save:&error]) {
    NSLog(@"Couldn't save: %@", [error localizedDescription]);
}
Run Code Online (Sandbox Code Playgroud)

但是,我收到以下错误:

'NSInvalidArgumentException', reason: '+entityForName: nil is not a legal NSManagedObjectContext parameter searching for entity name 'Events''
Run Code Online (Sandbox Code Playgroud)

有谁知道发生了什么?任何帮助,将不胜感激.

Ale*_*ere 46

我忘了将上下文传递给视图控制器.菜鸟错误.


小智 45

在开始从数据库中获取数据之前,可以通过包含以下代码来传递上下文:

AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication]delegate];
context = [appDelegate managedObjectContext];
Run Code Online (Sandbox Code Playgroud)


Tim*_*Tim 37

如果您使用segues,如果您没有通过上下文,您将遇到相同的问题.在启动segue的类的prepareForSegue方法中使用此代码:

[[segue destinationViewController] setManagedObjectContext:self.managedObjectContext];
Run Code Online (Sandbox Code Playgroud)

假设您将上下文保存在名为"managedObjectContext"的属性中.


Has*_*jmi 20

你应该将它添加到你的viewController:

 id delegate = [[UIApplication sharedApplication] delegate];
    self.managedObjectContext = [delegate managedObjectContext];
Run Code Online (Sandbox Code Playgroud)