我正在创建一个包装字典的自定义集合。
此集合应确定何时获取原始类型为string / int的枚举,如果是,则它将自动从中提取“ rawValue”。
我的下标之一应处理以下情况:下标的键为String
类型,值为Enum
case
例如:
dict["userEvent"] = Event.tap
我试过了 :
subscript<Index: ExpressibleByStringLiteral>(index: Index) -> Value? where Value == RawRepresentable {
get {
return self.elements[index as! Key]
}
set {
self.elements[index as! Key] = newValue?.rawValue
}
}
但是我遇到以下错误:
协议“ RawRepresentable”只能用作一般约束
因为它具有自我或相关类型要求
和
成员'rawValue'不能用于协议类型'RawRepresentable'的值;改用一般约束
我如何实现在设置新值时自动解开枚举大小写的下标?
最佳答案
RawRepresentable
具有通用约束。您可以做的是将“返回”类型添加为下标的一般约束中的另一个参数。像这样:subscript<Index: ExpressibleByStringLiteral, Return: RawRepresentable>(index: Index) -> Return?
但是我不确定这种配置是否会起作用。这个字典包装器是Dictionary
的独特子类还是Dictionary
的扩展?
关于ios - 如何创建处理RawRepresentable值的自定义集合下标,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58076271/