ios - Objective C View Controller 属性未保存

标签 ios objective-c xcode core-data properties

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

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)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 声明为(强,非原子)。有谁知道为什么 oManagedObjectContext 变为 null?

viewDidLoad代码:

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

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

最佳答案

问题是 didFinishLaunchingWithOptions 正在实例化一个新的 View Controller ,然后对其不执行任何操作(即丢弃它)。所以您正在查看两个不同的 View Controller 实例。


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

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)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/

相关文章:

java - 需要帮助将简短的 Objective-C 例程转换为 Java

objective-c - 如何在我的自定义 TableviewCell 中访问 ImageView 而无需创建其导出

ios - 无法更新配置文件

ios - 使用 Swift 包管理器时,图像未在 SwiftUI 预览中显示 - 在 Xcode 项目中工作正常

ios - 触摸 UITableView 中的行时更改 UINavigationBar 中的标题

ios - 将 NSLog 添加到 Objective-C 中的所有方法

iphone - 修改文件 IOS 的 UTF 时间

ios - 具有超过 8 个值的 NS_OPTIONS

ios - 如何让 NSURLConnection.sendAsynchronousRequest 在 UITableView 初始化之前执行

objective-c - 在 iOS 中重用自定义工具栏