В основном проблема заключается в RawReпредставляемой части кода, мне нужно иметь возможность получить ее значение, но поскольку мне нужно использовать протокол, это не позволяет мне использовать rawValue. Любое обходное решение для этого?Кастинг для протокола и использование значения?
public protocol Serializable {
func dictionary() -> [String: Any]
}
extension Serializable {
func dictionary() -> [String: Any] {
var result = [String: Any]()
let mirror = Mirror(reflecting: self)
for child in mirror.children {
guard let label = child.label else { continue }
switch child.value {
case let serializable as Serializable:
result[label] = serializable.dictionary()
// Compile error here
case let rawRepresentable as RawRepresentable:
result[label] = rawRepresentable.rawValue
default:
result[label] = child.value
}
}
return result
}
}
Вы могли бы добавить метод расширения RawRepresentable, который принимает словарь как INOUT и помещает RawValue в нем. – zneak