Swift让属性通过prepareForSegue设置

时间:2016-01-18 15:57:55

标签: ios swift properties segue optional

在Objective-C中,我可以非常轻松地将属性添加到.h文件...

@property (nonatomic, strong) Person *person;

然后在prepareForSegue:withIdentifier:

期间设置此属性

在此示例中,视图控制器的类为PersonViewController。它旨在显示有关特定Person对象的信息。它需要一个Person对象来显示任何内容,Person对象不会更改。显示需要的另一个人,然后弹出并推送到PersonViewController的其他实例。

对我来说,这表明在Swift中person属性应该这样定义......

let person: Person

除了它不可能。如果我以这种方式设置它然后必须在init方法结束之前初始化...但是没有办法这样做,因为它由Storyboard实例化。

所以我可以这样做......

var person: Person?

除非这是错误的。 PersonViewController如果没有personvar将无效,因此将其设为有意义并使person成为guard let person = person else {return} 并不合理person不会改变。

除此之外,我还要添加......

var person = Person()

到我需要使用Person对象的每个函数。

我可以这样做......

var

但这会让人感到烦恼和浪费。每次我创建视图控制器时,我现在创建然后丢弃{{1}}。它也是一个在视图控制器的上下文中没有意义的var。

在属性不可选的segue中传递属性的最佳方法是什么,不是{{1}}并且不是在init期间创建的?

1 个答案:

答案 0 :(得分:5)

我认为最好的方法是将其声明为:

var person: Person!

如果您确定将始终设置person对象,则可以节省您打开可选项的时间。

我担心你不能将它声明为let,因为这个属性将在初始化类之后设置。