Mój kod jest bardzo prosty.Nie można wywołać metody typu w klasie zgodnej z protokołem
Mój protokół:
protocol BaseEntity
{
class func getInstance(sourceObject: [NSObject : AnyObject], context: AnyObject!) -> BaseEntity
init()
}
Następnie w innej klasie mam tej metody:
private func convertJSONDictionaryIntoModel(jsonDictionary : [NSObject : AnyObject], mapClass: BaseEntity.Type) -> BaseEntity
{
let object = mapClass.getInstance(jsonDictionary, context: nil)
return object
}
Mam błąd kompilatora na pierwszej linii, która brzmi „członków przypadek dostępu do wartości typ protokołu BaseEntity Typ jest niezaimplementowany "
O ile wiem, jest to możliwe w Swift.
Niestety, nie mogłem znaleźć żadnego rozwiązania tego. Jedynym sposobem, w jaki jestem w stanie to zaakceptować, jest użycie generycznych, ale generyczne mają również swoje własne ograniczenia. Tego rodzaju problemy sprawiają, że naprawdę myślę, że język jest niekompletny. Ich celem było ułatwienie i wyraźniej ... zgadnij, co jeśli nie obsługują tego rodzaju rzeczy i trzeba polegać na niektórych obejściach, jak ten, który wyeksponowałeś, to jest dość mocno spieprzone. – mdonati