Ios 尝试保存核心数据记录后出错

Ios 尝试保存核心数据记录后出错,ios,core-data,managedobjectcontext,Ios,Core Data,Managedobjectcontext,我有一个视图控制器来添加核心数据记录。核心数据实体名称为FavoriteThings,属性为thingname。我有一个名为SaveButtonAction的保存按钮操作。当我点击按钮内部时,插入名为ToDoTextField的文本字段中的文本应该被存储,但应用程序崩溃,显示以下日志错误: 2013-12-09 12:30:07.488 Favorite Things[1701:a0b] *** Terminating app due to uncaught exception 'NSInval

我有一个视图控制器来添加核心数据记录。核心数据实体名称为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]);
    }

感谢您的时间。

您没有将
NSManagedObjectContext
传递给视图控制器(您的上下文为
nil
)。
尝试保留对它的强引用,并使用有效上下文初始化视图控制器。


如果使用CoreData项目的样板代码,则可以通过应用程序委托访问主上下文:
appDelegate.managedObjectContext

它告诉您managedObjectContext参数的值为nil。
也许您指的是
[self-managedObjectContext]
,我猜这是一个访问器,它可能“懒惰”地实例化托管对象上下文,目前还没有被调用。您正在抛出异常的代码中直接访问实例变量。

请检查enity名称,并执行以下操作

在你的应用程序中

+(YourAppDeleagte*)sharedManagedContext;
在YourAppDelegte.m中

  +(YourAppDeleagte*)sharedManagedContext{

     return (YourAppDeleagte *)[[UIApplication sharedApplication]delegate];
}
在viewController.m中

#导入“YourAppDelegate.h”


谢谢@DineshKumar,但是字符+(…*)是什么意思?+(void)方法A它是类方法-(void)方法B它是实例方法你的意思是将这一行添加到我的AppDelegate.h:-(void)sharedManagedContext;
@property(nonatomic,retain)NSmanagedObjectContext *managedObjectContext;

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