【发布时间】:2018-05-03 02:30:12
【问题描述】:
我有一堂课:
class User: NSObject {
var name = "User_Name"
// Other variables and methods
}
以及从“用户”继承的第二个类:
class Employee: User {
var job = "Manager"
// other variables and methods
}
我希望能够在一个函数中检查两者之间的关系,并对它们采取稍微不同的行动。
我相信我可以在使用之前使用保护语句将“AnyObject”参数转换为可疑类型,但不知道如何在两种不同的类类型之间进行检查。例如,我相信我可以对一种类型执行以下操作:
func addUser(user : AnyObject) {
guard let user = user as? User else {return}
// do something with 'user' which is known to be of type 'User'
}
但无法弄清楚如果发送的参数不是“用户”类型,如何检查它是否是员工。如果守卫语句评估为真,我想做非常相似的操作,无论它是用户还是员工,因此认为必须有一种方法可以在不重复代码的情况下做到这一点。
有人可以指出我在两种类型之间进行测试的正确方向吗?
【问题讨论】:
-
不相关但你为什么要扩展
NSObject?仅当您有明确且可理解的原因时才这样做。 -
我认为在创建没有超类的新类时需要这样做?不是吗?你谈论的原因是什么?
-
@AlTopping 不,自定义类不需要从任何现有类继承,因此除非您明确需要其他类的某些功能,否则不要从它继承
-
在 Objective-C 中,你必须有一个基类。但不是在 Swift 中。
-
感谢所有cmets;你们俩都非常有帮助。铝
标签: swift generics inheritance casting