在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
如果没有person
,var
将无效,因此将其设为有意义并使person
成为guard let person = person else {return}
并不合理person
不会改变。
除此之外,我还要添加......
var person = Person()
到我需要使用Person
对象的每个函数。
我可以这样做......
var
但这会让人感到烦恼和浪费。每次我创建视图控制器时,我现在创建然后丢弃{{1}}。它也是一个在视图控制器的上下文中没有意义的var。
在属性不可选的segue中传递属性的最佳方法是什么,不是{{1}}并且不是在init期间创建的?
答案 0 :(得分:5)
我认为最好的方法是将其声明为:
var person: Person!
如果您确定将始终设置person对象,则可以节省您打开可选项的时间。
我担心你不能将它声明为let,因为这个属性将在初始化类之后设置。