jeudi 5 mars 2015

superclass methods to return sublass class in swift

I have this code:



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"


The problem occurs when I do this:



var ret = Black.devour(5)
ret.success //returns 0 which is suppose to be 5

ret.self // returns {Dark success 0} which is suppose to be {Black success 0}


I want to be able to return the subclass type and not the superclass type when calling devour. I hope someone can help me on this. :) Im really out of ideas.




Aucun commentaire:

Enregistrer un commentaire