You can achieve this via a custom protocol that is implemented only by the types you want to allow within the dictionary:
protocol AllowedDictionaryValue: {}
extension String: AllowedDictionaryValue {}
extension Int: AllowedDictionaryValue {}
extension MyClass: AllowedDictionaryValue {}
extension MyEnum: AllowedDictionaryValue {}
let dictionary: [String:AllowedDictionaryValue] = ...
The above dictionary will hold only String
's, Int
's, MyClass
instances, and MyEnum
values.
This way you can have only the values you want in the dictionary, while keeping the dictionary heterogenous.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…