[英]Swift let property set through prepareForSegue
在Objective-C中,我可以轻松地将属性添加到.h
文件中...
@property (nonatomic, strong) Person *person;
然后在prepareForSegue:withIdentifier:
期间设置此属性。
在此示例中,视图控制器的类是PersonViewController
。 它旨在显示有关特定Person
对象的信息。 它需要一个Person
对象来显示任何内容,并且Person
对象不会改变。 要显示需要并弹出并推送到PersonViewController
的其他实例的PersonViewController
。
对我而言,这建议在Swift中对person
属性进行定义,如下所示:
let person: Person
除了不能。 如果以这种方式设置它,则必须在init
方法结束之前对其进行初始化...但是无法执行此操作,因为它是由Storyboard
实例化的。
所以我可以做...
var person: Person?
除了这是错误的。 没有person
, PersonViewController
将无法工作,因此将其PersonViewController
可选是没有意义的,将其设为var
也没有意义,因为person
不会改变。
除此之外,我还必须添加...
guard let person = person else {return}
到需要使用person
对象的每个函数。
我可以这样
var person = Person()
但这感觉很麻烦而且很浪费。 每次创建视图控制器时,我现在都会创建一个,然后扔掉一个Person
。 这也是一个在视图控制器上下文中没有意义的变量。
在等价的属性中进行传递属性的最佳方法是什么(该属性不是可选的,不是var
且不是在初始化期间创建的)?
我相信最好的方法是将其声明为:
var person: Person!
如果您可以确保始终设置人员对象,则可以通过展开可选对象来节省时间。
恐怕您不能将其声明为let,因为将在初始化类后设置此属性。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.