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 UITableViewControllerUIViewController 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;
}