Я создаю пользовательскую коллекцию, которая упаковывает словарь.Эта коллекция должна определять, когда она получает перечисление, которое имеет необработанное значение типа: string / int, и если это так, то оно автоматически извлечет из него «rawValue».
Один из моих подписчиков должен обрабатывать регистр, в котором ключ этого индекса имеет тип String
, а значение равно Enum
, например:
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' может использоваться только в качестве общего ограничения, поскольку он имеет требования к Self или связанные с типами
и
Элемент 'rawValue' нельзя использовать со значением типа протокола 'RawRepresentable';вместо этого используйте общее ограничение
Как я могу реализовать этот индекс, который автоматически развернет регистр перечисления при установке нового значения?