Fog*_*ter 2 properties optional ios segue swift
在Objective-C中,我可以非常轻松地将属性添加到.h文件中......
@property (nonatomic, strong) Person *person;
Run Code Online (Sandbox Code Playgroud)
然后在此期间设置此属性prepareForSegue:withIdentifier:.
在此示例中,视图控制器的类是PersonViewController.它旨在显示有关特定Person对象的信息.它需要一个Person对象来显示任何东西,Person对象不会改变.显示需要并弹出并推送到其他实例的其他人PersonViewController.
对我来说,这表明在Swift中person属性应该如此定义......
let person: Person
Run Code Online (Sandbox Code Playgroud)
除了它不可能.如果我这样设置它然后它必须在init方法结束之前初始化...但是没有办法这样做,因为它正在被实例化Storyboard.
所以我能做到这一点......
var person: Person?
Run Code Online (Sandbox Code Playgroud)
除了这是错误的.在PersonViewController没有将无法正常工作person,从而使其成为可选的没有意义,并使之成为var没有意义无论是作为person不会改变.
除此之外,我还要添加......
guard let person = person else {return}
Run Code Online (Sandbox Code Playgroud)
到我需要使用该person对象的每个函数.
我可以这样做......
var person = Person()
Run Code Online (Sandbox Code Playgroud)
但这会让人感到烦躁和浪费.每当我创建视图控制器时,我现在创建然后扔掉一个Person.它也是一个var,在视图控制器的上下文中没有意义.
在属性不是可选的segue期间执行传递属性的同等事物的最佳方法是什么var,是不是在init期间创建的?
我认为最好的方法是将其声明为:
var person: Person!
Run Code Online (Sandbox Code Playgroud)
如果您确定将始终设置person对象,则可以节省您打开可选项的时间.
我担心你不能将它声明为let,因为在初始化类之后将设置此属性.
| 归档时间: |
|
| 查看次数: |
229 次 |
| 最近记录: |