使用继承的对象我有一个对象,可能是这个样子......方式迅速
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