在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
的情况下无法正常工作,因此选择它是没有意义的,因为 person
不会改变,所以它也没有意义 .
除此之外,我还要添加......
guard let person = person else {return}
到我需要使用 person
对象的每个函数 .
我可以这样做......
var person = Person()
但这会让人感到烦躁和浪费 . 每当我创建视图控制器时,我现在创建然后扔掉 Person
. 它在视图控制器的上下文中是有意义的 .
在属性不是可选的segue期间执行传递属性的同等事情的最佳方法是什么,不是 var
并且不是在init期间创建的?
1 回答
我认为最好的方法是将其声明为:
如果您确定将始终设置person对象,则可以节省您打开可选项的时间 .
我担心你不能将它声明为let,因为在初始化类之后将设置此属性 .