2013-12-09 64 views
0

我有一个视图控制器添加一个核心的数据记录之后得到错误。核心数据实体名称为FavoriteThings,属性为thingname。我有一个名为SaveButtonAction的保存按钮操作。当我的按钮内部挖掘,插在被称为ToDoTextField的文本框的文本应存储,但应用程序崩溃显示以下日志错误:试图挽救核心数据记录

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'' 

这是方法

- (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]); 
    } 

感谢代码你的时间..

回答

0

请检查enity名称和YourAppDeleagte.m

+(YourAppDeleagte*)sharedManagedContext; 

在viewController.m

+(YourAppDeleagte*)sharedManagedContext{ 

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

#进口也可以在下面

在YourAppDeleagte.h “YourAppDelegate.h”

@property(nonatomic,retain)NSmanagedObjectContext *managedObjectContext; 

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

谢谢@DineshKumar,但字符+(... *)是什么意思? – mvasco

+0

+(void)methodA它是类方法 - (void)methodB它是实例方法 – DineshKumar

+0

您是否将此行添加到我的AppDelegate.h中: - (void)sharedManagedContext; – mvasco

1

你不通过你NSManagedObjectContext到视图控制器(你的上下文是nil)。
请尽量保持对它的强烈引用,并使用有效的上下文初始化您的视图控制器。

如果使用CoreData项目的样板代码,你可以通过你的应用程序代理获得访问主要方面:appDelegate.managedObjectContext

+0

谢谢@Dan Shelly。 – mvasco

1

它告诉你,你的managedObjectContext参数具有零值。 也许你的意思[self managedObjectContext],其中我要猜测是访问,可能是“懒惰”实例化管理对象方面,在这一点上还没有被调用呢。您直接在抛出异常的代码中访问实例变量。

+0

谢谢@quellish。 – mvasco