ios - prepareForSegue 目标 Controller 属性未设置
<p><p><strong>这是我的 prepareForSegue:</strong></p>
<pre><code>-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{
if (){
ALRollsTableViewController *rollsTableViewController = (ALRollsTableViewController *);
Camera *c = ];
NSLog(@"CAMERA FROM INSIDE PREPARE FOR SEQUE: %@", c);
rollsTableViewController.selectedCamera = c;
}
</code></pre>
<p>}</p>
<p><strong>我通过 NSLog 验证相机不为空:</strong></p>
<pre><code>CAMERA FROM INSIDE PREPARE FOR SEQUE: <Camera: 0x8dc1400> (entity: Camera; id: 0x8dafba0 <x-coredata://A415F856-5F21-4F08-9CAB-4B2A023B55C3/Camera/p1> ;
</code></pre>
<p><strong>ALRollsTableViewController viewDidLoad:</strong></p>
<pre><code>- (void)viewDidLoad
{
NSLog (@"ROLLS TABLE VIEW CONTROLLER : viewDidLoad!");
NSLog(@"(selected camera = %@", self.selectedCamera);
}
</code></pre>
<p><em>结果:</em></p>
<pre><code>ROLLS TABLE VIEW CONTROLLER : viewDidLoad!
(selected camera = (null)
</code></pre>
<p>如果没有设置属性,我在这里可能做错了什么?</p>
<hr/>
<p>更新</p>
<p>在 matt 的帮助下,我确定我的 prepareForSeque 中的目标 ViewController 的实例与实际的目标 ViewController 不匹配:</p>
<pre><code>rollsTableViewController FROM SEGUE: <ALRollViewController: 0x8d90bf0>
rollsTableViewController FROM viewDidLoad in rollsTableViewController: <ALRollsTableViewController: 0x8c5ab00>
</code></pre>
<p>我不知道为什么会出现这种情况或如何解决它。</p></p>
<br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
<p><p><strong><em>聊天后总结:</em></strong></p>
<p>嗯,这很复杂!但基本上你是这么说的:</p>
<pre><code>-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{
if (){
ALRollsTableViewController *rollsTableViewController = (ALRollsTableViewController *);
// ...
}
</code></pre>
<p>问题在于 <code></code> <em>不是</em> ALRollsTableViewController。因此,您没有与您认为正在与之交谈的实例交谈,也没有与您认为正在与之交谈的类的实例交谈。</p>
<p>令人惊奇的是,您的代码在运行时没有崩溃。你是这么说的:</p>
<pre><code>rollsTableViewController.selectedCamera = c;
</code></pre>
<p>但 <code>rollsTableViewController</code> 实际上并不是 ALRollsTableViewController。当你不正确地转换时,你对编译器撒了谎。然而,当那条线运行时,你并没有崩溃。为什么不?这是因为你有很多带有 <code>@property selectedCamera</code> 的类!所以你正在设置一个<em>不同的类</em>的属性。但是在那个类中<em>确实存在一个具有相同名称的属性</em>,所以你没有崩溃。因此,您没有发现这是错误的类和错误的实例。</p></p>
<p style="font-size: 20px;">关于ios - prepareForSegue 目标 Controller 属性未设置,我们在Stack Overflow上找到一个类似的问题:
<a href="https://stackoverflow.com/questions/23413884/" rel="noreferrer noopener nofollow" style="color: red;">
https://stackoverflow.com/questions/23413884/
</a>
</p>
页:
[1]