我有两个类(为了简化,我删除了其他字段,对象比 Person 更复杂):
class Person
{
var name: String = "Default name"
init(object: PersonEntity)
{
name = object.daysMask
}
}
class Employer: Person
{
}
我有为我配置一个人的功能
func getConiguratedPerson(name: String) -> Person
{
let person = Person()
person.name = name
}
如果我想得到Person
,我只需这样做:
let person = getConiguratedPerson("Alex")
但是如果我需要 Employer
并且我也想使用这个函数怎么办
let employer = getConiguratedPerson("Alex") // returns Person as expected but need to have employer instead.
在 Objective-C 中我们可以简单地做到这一点:
Employer *employer = Employer([self getConiguratedPerson:"Alex"]) if I remember.
最佳答案
错误是 getConfiguredPerson
函数。你想要一个初始化程序。初始化器返回您自己的类,这正是您想要的。
class Person {
var name: String = "Default name"
init(name: String) {
self.name = name
}
init(object: PersonEntity) {
self.init(object.daysMask)
}
}
class Employer: Person {}
现在要创建一个人,您只需使用 Person(name: "Alex")
并使用 Employer(name: "Alex")
获得雇主。
请注意,这在 ObjC 中也是如此。你也不应该在那里有 getConfiguredPerson
。你应该有 [Person initWithName:]
。
关于Swift 继承问题。如何获得合适的类对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39666077/