gpt4 book ai didi

objective-c - 从 View Controller 传递后,传递的托管对象上下文为空

转载 作者:行者123 更新时间:2023-11-29 13:35:12 25 4
gpt4 key购买 nike

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

#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 类设置上下文等

查看调试器,上下文似乎已在应用程序委托(delegate)中正确设置,并且当

testDatabaseMasterViewController.managedObjectContext = self.managedObjectContext ;

消息已发出。

然而,当 TableView 出现时,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 0x06d705a0UITableViewController UITableViewController
UIViewController UIViewController
_tableViewStyle UITableViewStyle UITableViewStylePlain_keyboardSupport id 0x00000000_staticDataSource id 0x00000000_tableViewControllerFlags managedObjectContext NSManagedObjectContext * 0x00000000fetchedResultsController NSFetchedResultsController * 0x00000000

最佳答案

您应该在 HEFTTestdatabaseMasterViewController 类的 viewDidLoad 方法中分配您的 managedObjectContext 属性,或者如果那是您不是的库文件应该简单地编辑它的子类并将其设置在自定义类的 viewDidLoad 中。

关于objective-c - 从 View Controller 传递后,传递的托管对象上下文为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10757000/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com