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