ios - Objective-C View Controller 属性未保存
<p><p>您好,我正在尝试设置我的 <code>UIViewController's</code> 托管对象上下文,但对象上下文未保存。代码如下:</p>
<pre><code>- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
UIStoryboard *mainStoryboard = ;
my_TableViewController *viewController = ;
if (]) {
;
}
NSLog(@"%@", self.managedObjectContext);
NSLog(@"%@", viewController.oManagedObjectContext);
}
</code></pre>
<p>下面的输出是</p>
<pre><code>Apple_Tutorial <NSManagedObjectContext: 0x7fb558d86600>
Apple_Tutorial <NSManagedObjectContext: 0x7fb558d86600>
</code></pre>
<p>但是当我打电话时</p>
<pre><code>NSLog(@"%@", self.oManagedObjectContext);
</code></pre>
<p>在 <code>my_TableViewController</code> 的 <code>viewDidLoad</code>() 中,输出为 <code>null</code>。 oManagedObjectContext 被声明为 <code>(strong, nonatomic)</code>。有谁知道为什么 oManagedObjectContext 变为空?</p>
<p>viewDidLoad 代码:</p>
<pre><code>- (void)viewDidLoad {
;
UINib *nib = ;
[ registerNib:nib forCellReuseIdentifier:@"tableViewCell"];
NSLog(@"%@", self.oManagedObjectContext);
}
</code></pre></p>
<br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
<p><p>问题是 <code>didFinishLaunchingWithOptions</code> 正在实例化一个新的 ViewController ,然后什么都不做(即丢弃它)。因此,您正在查看两个不同的 ViewController 实例。</p>
<hr/>
<p>您可以让应用委托(delegate)设置 Root ViewController 的 <code>oManagedObjectContext</code>:</p>
<pre><code>- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
ViewController *controller = (id)self.window.rootViewController;
NSAssert(], @"Root controller should be `ViewController`, but is %@", controller);
controller.oManagedObjectContext = self.managedObjectContext;
return YES;
}
</code></pre>
<p>显然,如果您的 ViewController 不是根 Controller (例如,如果它位于某些容器 ViewController 中,例如导航 Controller 、标签栏 Controller 、自定义容器 Controller 等),那么您就必须进行调整上面的代码在该层次结构中导航以找到您的 ViewController 类。</p></p>
<p style="font-size: 20px;">关于ios -Objective-C ViewController 属性未保存,我们在Stack Overflow上找到一个类似的问题:
<a href="https://stackoverflow.com/questions/31065866/" rel="noreferrer noopener nofollow" style="color: red;">
https://stackoverflow.com/questions/31065866/
</a>
</p>
页:
[1]