• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

ios - Objective-C View Controller 属性未保存

[复制链接]
菜鸟教程小白 发表于 2022-12-12 15:39:00 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

您好,我正在尝试设置我的 UIViewController's 托管对象上下文,但对象上下文未保存。代码如下:

- (BOOL)applicationUIApplication *)application didFinishLaunchingWithOptionsNSDictionary *)launchOptions {
UIStoryboard *mainStoryboard = [UIStoryboard storyboardWithName"Main" bundle: nil];
my_TableViewController *viewController = [mainStoryboard instantiateViewControllerWithIdentifier"coretut"];
if ([viewController isKindOfClass:[my_TableViewController class]]) {
    [viewController setOManagedObjectContext:self.managedObjectContext];
}
NSLog(@"%@", self.managedObjectContext);
NSLog(@"%@", viewController.oManagedObjectContext);
}

下面的输出是

Apple_Tutorial[11241:461826] <NSManagedObjectContext: 0x7fb558d86600>
Apple_Tutorial[11241:461826] <NSManagedObjectContext: 0x7fb558d86600>

但是当我打电话时

NSLog(@"%@", self.oManagedObjectContext);

my_TableViewControllerviewDidLoad() 中,输出为 null。 oManagedObjectContext 被声明为 (strong, nonatomic)。有谁知道为什么 oManagedObjectContext 变为空?

viewDidLoad 代码:

- (void)viewDidLoad {
    [super viewDidLoad];
    UINib *nib = [UINib nibWithNibName"my_TableViewCell" bundle:nil];
    [[self tableView] registerNib:nib forCellReuseIdentifier"tableViewCell"];

    NSLog(@"%@", self.oManagedObjectContext);
}



Best Answer-推荐答案


问题是 didFinishLaunchingWithOptions 正在实例化一个新的 View Controller ,然后什么都不做(即丢弃它)。因此,您正在查看两个不同的 View Controller 实例。


您可以让应用委托(delegate)设置 Root View Controller 的 oManagedObjectContext:

- (BOOL)applicationUIApplication *)application didFinishLaunchingWithOptionsNSDictionary *)launchOptions {
    ViewController *controller = (id)self.window.rootViewController;
    NSAssert([controller isKindOfClass:[ViewController class]], @"Root controller should be `ViewController`, but is %@", controller);

    controller.oManagedObjectContext = self.managedObjectContext;

    return YES;
}

显然,如果您的 View Controller 不是根 Controller (例如,如果它位于某些容器 View Controller 中,例如导航 Controller 、标签栏 Controller 、自定义容器 Controller 等),那么您就必须进行调整上面的代码在该层次结构中导航以找到您的 View Controller 类。

关于ios - Objective-C View Controller 属性未保存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31065866/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap