Getting error after trying to save core data record

狂风中的少年 提交于 2019-12-11 19:43:01

问题


i have a view controller to add a core data record. The core data entity name is FavoriteThings, the attribute is thingname. I have a save button action called SaveButtonAction. When I tap inside the button, the text inserted in the textfield called ToDoTextField should be stored, but the app crashed showing following log error:

2013-12-09 12:30:07.488 Favorite Things[1701:a0b] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '+entityForName: nil is not a legal NSManagedObjectContext parameter searching for entity name 'FavoriteThing'' 

This is the code for the method

- (IBAction)SaveButtonAction:(id)sender {
    FavoriteThing *newEntry = [NSEntityDescription insertNewObjectForEntityForName:@"FavoriteThing" inManagedObjectContext:managedObjectContext ];
    newEntry.thingName = self.ToDoTextField.text;
    NSError *error;
    if (![self.managedObjectContext save:&error])
    {
        NSLog(@"Whoops, couldn't save:%@",[error localizedDescription]);
    }

Thank you for your time..


回答1:


Please check the enity name and also do the following

in YourAppDeleagte.h

+(YourAppDeleagte*)sharedManagedContext;

in YourAppDeleagte.m

  +(YourAppDeleagte*)sharedManagedContext{

     return (YourAppDeleagte *)[[UIApplication sharedApplication]delegate];
}

in viewController.m

#import "YourAppDelegate.h"

@property(nonatomic,retain)NSmanagedObjectContext *managedObjectContext;

-(void)viewDidLoad{
   [super viewDidLoad];
   self.managedObjectContext=[YourAppDelagete shareManagedContext].managedObjectContext;         
 }



回答2:


You don't pass your NSManagedObjectContext to the view controller (your context is nil).
Try keeping a strong reference to it and initialise your view controller with a valid context.

If you use the boilerplate code of a CoreData project, you could get access to the main context via your app delegate: appDelegate.managedObjectContext




回答3:


It's telling you that your managedObjectContext parameter has the value of nil. Perhaps you meant [self managedObjectContext], which I am going to guess is an accessor that may be "lazy" instantiating the managed object context, and at this point hasn't been called yet. You are accessing the instance variable directly in the code that is throwing an exception.



来源:https://stackoverflow.com/questions/20479242/getting-error-after-trying-to-save-core-data-record

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!