繁体   English   中英

Swift let属性通过prepareForSegue设置

[英]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?

除了这是错误的。 没有personPersonViewController将无法工作,因此将其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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM