2016-11-11 43 views
0

我正将一个User对象传递给另一个segue。无论出于何种原因,我都可以打印出对象并查看控制台中的所有信息。我甚至可以打开数据,但是当我将数据插入插座时,它会崩溃。当数据存在时,Swift错误展开为零

var user : User? { 
    didSet { 
     if let name = user?.name { 
      print(name) 
      nameLabel.text = name 
     } 
    } 
} 

enter image description here 正如你所看到的属性存在,但是当我尝试将其应用到我的IBOutlet崩溃....

enter image description here

+0

1.您是否'nameLabel'正确连接。 2. storyboard/xib中的名称是否会更改。交叉检查这些点。 – pkc456

+0

设置数据在'viewDidLoad'方法 –

+0

是的我的网点连接,它的超级怪异,因为我可以将它设置为nameLabel.text =“我可以键入任何,但我不能把名称变量” – user934902

回答

1

如果要设置的值从一些其他控制器和ChatVC未加载,然后您的nameLabelnil,您可以通过检查nil来防止崩溃。

var user : User? { 
    didSet { 
     if let name = user?.name { 
      print(name) 
      if nameLabel != nil { 
       nameLabel.text = name 
      } 
     } 
    } 
} 

此外,如果你的环境,让您创建的ChatVC实例,然后,而不是做这个的nameLabel你需要设置的ChatVC这样viewDidLoadLabel文本。

override func viewDidLoad() { 
    super.viewDidLoad() 
    nameLabel.text = user?.name 
} 
+0

可以防止崩溃,但仍然不会获得标签中的数据 – user934902

+0

@ user934902检查编辑的答案 –

+0

@ user934902它现在在工作吗? –

相关问题