Обобщения Swift являются инвариантными, поэтому Entity<B>
не является подклассом Entity<A>
, даже если B будет подклассом A. Поэтому вы не можете хранить те же типы, используя суперкласс Entity
в словаре.
Вы можете достичь желаемого, используя AnyObject
в качестве значения словаря, например с этим кодом: -
var dictionary: Dictionary<String, AnyObject> = [
"One": FloatEntity (defaultValue: 1),
"Two": FloatEntity (defaultValue: 2),
]
Я не думаю, что из этого можно извлечь Entity
с удаленным шрифтом (рад, что его исправили). Но вы могли бы сделать что-то вроде этого: -
let v = dictionary["One"]
if let v1 = v as? FloatEntity
{
...
}