jeudi 10 novembre 2016

I want to return a RawRepresentable's rawValue as an Any, but I only receive it as an Any

so I have a function which receives an Any and it checks if the Any is an enum by using reflection:

func extractRawValue(subject: Any) throws -> Any {
    let mirror = Mirror(reflecting: subject)

    guard let displayStyle = mirror.displayStyle,
        case .`enum` = displayStyle else {
            throw Errors.NoEnum
    }

    // And from here I don't know how to go any further...
    // I wish I could do something like this:
    guard let subject = subject as? RawRepresentable where let rawValue = subject.rawValue as Any else {
        throw Errors.NoRawRepresenable
    }

    return rawValue 
}

Does anyone know how I can accomplish something like that?





Aucun commentaire:

Enregistrer un commentaire