我有兩個班(簡化我將其他申請對象較爲複雜,則人):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是正確的。你想要一個工廠有什麼具體問題? –
尤其是,大多數代碼中不能「配置任何想要的單元格」。你需要知道你要返回的是什麼樣的單元格(否則,你將如何配置它?)。如果您知道,那麼泛型通常是答案。 –