我有两个班(简化我将其他申请对象较为复杂,则人):Swift继承问题。如何获得适当的类对象
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.
谢谢您的回答,但如何建立工厂方法然后?如果我不需要类似于工厂方法模式的方法。或者例如索引路径中的行的单元格也返回UITableViewCell,但是您可以配置任何单元格(如果需要) –
对于cellForRow,您通常需要泛型和as!投。对于最常见的“返回自我类”的情况,由于继承问题,这对于类是不可能的(搜索“协议返回自我”,您应该在SO上找到关于它的许多讨论)。在任何情况下都没有一个普遍的答案。你需要一个明确的问题来解决你想要做的事情。在你描述的情况下,init是正确的。你想要一个工厂有什么具体问题? –
尤其是,大多数代码中不能“配置任何想要的单元格”。你需要知道你要返回的是什么样的单元格(否则,你将如何配置它?)。如果您知道,那么泛型通常是答案。 –