Objective c 从视图控制器传递后,传递的托管对象上下文为null

Objective c 从视图控制器传递后,传递的托管对象上下文为null,objective-c,ios,Objective C,Ios,我正在尝试做一个简单的核心数据应用程序。我在应用程序代理中有以下代码: #import <UIKit/UIKit.h> @interface HEFTAppDelegate : UIResponder <UIApplicationDelegate>{ } @property (strong, nonatomic) UIWindow *window; @property (strong, nonatomic) NSManagedObjectContext *man

我正在尝试做一个简单的核心数据应用程序。我在应用程序代理中有以下代码:

#import <UIKit/UIKit.h>

@interface HEFTAppDelegate : UIResponder <UIApplicationDelegate>{

}


@property (strong, nonatomic) UIWindow *window;

@property (strong, nonatomic) NSManagedObjectContext *managedObjectContext;


@end
HEFTData_Manager类设置上下文等

查看调试器,应用程序委托中的上下文似乎设置正确,并且

testDatabaseMasterViewController.managedObjectContext = self.managedObjectContext ;
消息已发出

但是,当出现表视图时,HEFTTestdatabaseMasterViewController managedObjectContext为空

任何关于发生了什么的想法和建议都将受到感激

调试器输出 地址:

地址:

自重测试数据库主视图控制器*常数0x06d705a0 UITableViewController UITableViewController
UIViewController UIViewController
_tableViewStyle UITableViewStyle UITableViewStyle普通 _键盘支持id 0x00000000 _静态数据源id 0x00000000 _tableViewControllerFlags managedObjectContext NSManagedObjectContext*0x00000000 fetchedResultsController NSFetchedResultsController*0x00000000


您应该在
HEFTTestdatabaseMasterViewController
类的
viewDidLoad
方法中分配
managedObjectContext
属性,或者,如果这是一个不应该编辑的库文件,只需将其子类化,并在自定义类的
viewDidLoad
中进行设置。

您应该在
HEFTTestdatabaseMasterViewController
类的
viewDidLoad
方法中分配
managedObjectContext
属性,或者,如果这是一个不应该编辑的库文件,只需将其子类化,并在自定义类的
viewdiload
中进行设置。

添加:

id appDelegate=(id)[[UIApplication sharedApplication]委托]; self.managedObjectContext=[appDelegate managedObjectContext]

到HEFTTestDatabaseMasterVIewController的viewDidLoad方法

已工作并将在需要访问managedObjectContext的其他类中工作添加:

id appDelegate=(id)[[UIApplication sharedApplication]委托]; self.managedObjectContext=[appDelegate managedObjectContext]

到HEFTTestDatabaseMasterVIewController的viewDidLoad方法


已在需要访问managedObjectContext的其他类中工作,也将在这些类中工作

您是否使用故事板?我这样问是因为在
didfishlaunchwithoptions
YES我是之前,您没有设置rootViewController。我正在使用选项卡栏控制器来控制应用程序。如果我添加如下内容:self.window.rootViewController=testDatabaseMasterViewController;应用程序加载,但选项卡栏不加载。抱歉,我刚开始使用iOS,在OSX上有一些经验,你在使用故事板吗?我这样问是因为在
didfishlaunchwithoptions
YES我是之前,您没有设置rootViewController。我正在使用选项卡栏控制器来控制应用程序。如果我添加如下内容:self.window.rootViewController=testDatabaseMasterViewController;应用程序加载,但选项卡栏不加载。很抱歉,我刚刚启动了iOS,之前在OSXtanks上有一些经验使用了它,并且它可以工作:id appDelegate=(id)[[UIApplication sharedApplication]delegate];self.managedObjectContext=[appDelegate managedObjectContext];感谢您使用了它,它可以工作:id appDelegate=(id)[[UIApplication sharedApplication]delegate];self.managedObjectContext=[appDelegate managedObjectContext];
testDatabaseMasterViewController.managedObjectContext = self.managedObjectContext ;
testDatabaseMasterViewController.managedObjectContext = self.managedObjectContext ;

testDatabaseMasterViewController    HEFTTestdatabaseMasterViewController
*   0x06d74b50 UITableViewController    UITableViewController    managedObjectContext   NSManagedObjectContext *    0x06d778e0
fetchedResultsController    NSFetchedResultsController *    0x00000000
- (void)viewDidLoad
{
    [super viewDidLoad];
    
   // NSManagedObjectContext *context = self.managedObjectContext;
    
    NSLog(@"context : %@",self.managedObjectContext);
    
    self.navigationItem.leftBarButtonItem = self.editButtonItem;
    
    UIBarButtonItem *addButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAdd target:self action:@selector(insertNewObject:)];
    self.navigationItem.rightBarButtonItem = addButton;
    
}