Ich habe diesen Code zurück:Super Methoden Unterklasse Typ in schnellen
class Dark: NSObject {
class var className: String {
return NSStringFromClass(self)!.componentsSeparatedByString(".").last!
}
var success = 0
class func devour<T: Dark>(params: Int) -> T {
var s = T()
return assign(s, params: params)
}
class func assign<T: Dark>(item: T, params: Int) -> T{
if item.dynamicType === self {
item.success = params
}
return item
}
}
class Black: Dark {
}
class Violet: Dark {
}
Black.className // returns "Black"
Violet.className // returns "Violet"
Das Problem tritt auf, wenn ich dies tun:
var ret = Black.devour(5)
ret.success //returns 0 which I expect to be 5
ret.self // returns {Dark success 0} which I expect to be {Black success 0}
Das hier Problem ist, dass, wenn die Unterklasse verwendet die geerbte Methode verschlingen, gibt es ein Objekt vom Typ Dark
zurück. Ich möchte in der Lage sein, beim Aufruf von devour den Unterklasse-Typ und nicht den Oberklasse-Typ zurückzugeben. Beispiel, wenn ich tun:
var ret = Black.devour(5)
Die Klasse der ret der Klasse sein sollte Black
und nicht der Klasse Dark
.
Ich hoffe, dass mir jemand dabei helfen kann. Ich habe wirklich keine Ideen. Vielen Dank! Ich möchte die Verkettung vermeiden und halte es für den letzten Ausweg.
Was genau ist dein Problem? Fehlerprotokoll bitte. –
Siehe http://stackoverflow.com/questions/26296938/returning-a-subclass-from-its-base-class-in-swift –
hi @RobinEllerkmann: Das Problem hier ist, dass, wenn die Unterklasse die geerbte Methode devour verwendet, Es gibt ein Objekt vom Typ Dark zurück. Ich möchte in der Lage sein, den Unterklasse-Typ und nicht den Oberklasse-Typ zurückzugeben, wenn Sie den Aufruf von – oregon