使用繼承的對象我有一個對象,可能是這個樣子......方式迅速
class User {
var username: String?
}
我想有網友認爲可能是某個學生或教師。目前,我在性能和用戶類像這樣已經加入...
class User {
var username: String?
// student properties
var year: Int?
// teacher properties
var department: String?
}
我敢肯定,我應該在這裏用繼承,但我很擔心,將會使控制流有點複雜。例如,作爲登錄功能的一部分,我這樣做...
let appDelegate = UIApplication.sharedApplication().delegate as! AppDelegate
appDelegate.user = User(delegate: self)
appDelegate.user!.load_from_user_defaults()
或獲得當前用戶的東西,我會做到這一點...
let appDelegate = UIApplication.sharedApplication().delegate as! AppDelegate
var username = appDelegate.user.username
我將如何使用繼承,在這種情況下,鑑於我不知道這是一名教師還是一名學生登錄?堅持我這樣做的方式更容易嗎?
既然你對學生和老師不同的屬性,我認爲你必須決定哪些你與在某些時候處理的方式。 –
提示1:永遠不要使用'UIApplication.sharedApplication()。delegate as! AppDelegate'在您的應用程序中,但將引用傳遞給視圖控制器,從AppDelegate開始。提示2:使用工廠模式 - 只是谷歌它。例如,您可以通過超類的靜態方法實例化任何這些類的實例。然後您可以隨時訪問用戶名。檢查是否有人是學生:'myVariable是學生'。訪問一個學生的變量:'(myVariable as?Student)?year'將年份作爲可選項返回(如果不是學生,則爲零,否則爲數值) – borchero
感謝Oliver,我很欣賞這個建議。看起來我還有很多的閱讀要做!當你說永遠不要使用UIApp ...系列時,有沒有好的理由不?我想了解_why_我正在寫點什麼,而不僅僅是要改變它。我可以看到你如何使用prepareForSegue來做到這一點。 [鏈接](http://jamesleist.com/ios-swift-passing-data-between-viewcontrollers/),但這是否創建對象的副本,或保留原來的? – Ben