я хотел бы использовать быстрые дженерики в пути, описанные ниже:Невозможно преобразовать возвращаемое выражение реализации типа функции родового протокола в
class ResponseContainer {
}
protocol DisplayManageable {
func getModel<ModelType: ResponseContainer>() -> ModelType?
}
class DisplayBaseManager<ObtainedModelType: ResponseContainer>: NSObject, DisplayManageable {
var modelObtained: ObtainedModelType? = nil
func getModel<ObtainedModelType>() -> ObtainedModelType? {
return modelObtained
}
}
Но у меня есть проблемы с этим кодом, более точно есть проблема в эта линия:
return modelObtained
И я получаю ошибку:
Cannot convert return expression of type 'ObtainedModelType?' to return type 'ObtainedModelType?'
А теперь мой простой Q неужели я не могу это сделать? Что в этом плохого?
Дженерики в функции протокола и определения классов одинаковы. На мой взгляд, все выглядит хорошо, и логически все в порядке, так почему я не могу это сделать?
Что бы сделать это * компилировать *, а значит, в вызове 'manager.getModel()' тип return не зависит от типа 'manager'. Вам нужно будет вызвать 'let model = manager.getModel() как MyModelType?', И это вернет 'nil', если типы не совпадают. –