Il mio codice è davvero semplice.Impossibile chiamare il metodo type sulla classe conforme al protocollo
mio protocollo:
protocol BaseEntity
{
class func getInstance(sourceObject: [NSObject : AnyObject], context: AnyObject!) -> BaseEntity
init()
}
Poi in un'altra classe che ho questo metodo:
private func convertJSONDictionaryIntoModel(jsonDictionary : [NSObject : AnyObject], mapClass: BaseEntity.Type) -> BaseEntity
{
let object = mapClass.getInstance(jsonDictionary, context: nil)
return object
}
ho ottenuto un errore di compilazione sulla prima riga che legge come "Accesso ai membri del protocollo di valore di tipo BaseEntity .Type è non implementato "
Per quanto posso dire, questo è possibile in Swift.
Purtroppo, non sono riuscito a trovare una soluzione a questo. L'unico modo in cui riesco ad accettarlo è usando i generici, ma anche i generici hanno i loro limiti. Questo tipo di problemi mi fa davvero pensare che la lingua sia incompleta. Il loro intento era quello di rendere le cose più facili e più esplicite ... beh, supponiamo che se non supportano questo tipo di cose e uno deve fare affidamento su alcuni workaround come quello che hai esposto, che è piuttosto fregato. – mdonati