【发布时间】:2012-05-25 15:14:49
【问题描述】:
我正在尝试做一个简单的核心数据应用程序。我在应用程序委托中有以下代码:
#import <UIKit/UIKit.h>
@interface HEFTAppDelegate : UIResponder <UIApplicationDelegate>{
}
@property (strong, nonatomic) UIWindow *window;
@property (strong, nonatomic) NSManagedObjectContext *managedObjectContext;
@end
然后在实现中
#import "HEFTAppDelegate.h"
#import "HEFTMasterViewController.h"
#import "HEFTTestdatabaseMasterViewController.h"
#import "HEFTData_Manager.h"
@implementation HEFTAppDelegate
@synthesize window = _window;
@synthesize managedObjectContext = __managedObjectContext;
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
// Override point for customization after application launch.
if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPad) {
//ipad init
} else {
HEFTTestdatabaseMasterViewController *testDatabaseMasterViewController = [[HEFTTestdatabaseMasterViewController alloc]initWithStyle:UITableViewStylePlain];
HEFTData_Manager *dataManager = [[HEFTData_Manager alloc]init];
self.managedObjectContext = [dataManager mainObjectContext];
// Pass the managed object context to the view controller.
testDatabaseMasterViewController.managedObjectContext = self.managedObjectContext ;
}
return YES;
}
HEFTData_Manager 类设置上下文等
查看调试器,上下文似乎已在应用委托中正确设置,并且
testDatabaseMasterViewController.managedObjectContext = self.managedObjectContext ;
消息已发出。
但是当表格视图出现时,HEFTTestdatabaseMasterViewController managedObjectContext 为 NULL
任何关于正在发生的事情的想法和指点将不胜感激。
调试器输出
在:
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;
}
self HEFTTestdatabaseMasterViewController *const 0x06d705a0 UITableViewController UITableViewController
UIViewController UIViewController
_tableViewStyle UITableViewStyle UITableViewStylePlain _keyboardSupport id 0x00000000 _staticDataSource id 0x00000000 _tableViewControllerFlags managedObjectContext NSManagedObjectContext * 0x00000000 fetchedResultsController NSFetchedResultsController * 0x00000000
【问题讨论】:
-
你在使用故事板吗?我问是因为您在
didFinishLaunchingWithOptions中返回 YES 之前没有设置 rootViewController -
是的,我是。我正在使用标签栏控制器来控制应用程序。如果我添加类似: self.window.rootViewController = testDatabaseMasterViewController;应用程序加载但标签栏没有。抱歉,我在 OSX 上的一些经验后才开始使用 iOS
标签: objective-c ios