Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- func convert2Dictionary<T>(_ any: T) -> Any {
- let mirror = Mirror(reflecting: any)
- if let style = mirror.displayStyle {
- if style == .collection {
- var array: [Any] = []
- for (_, valueMaybe) in mirror.children {
- let value = unwrap(valueMaybe)
- array.append(convert2Dictionary(value))
- }
- return array
- } else {
- var dict: [String: Any] = [:]
- for (labelMaybe, valueMaybe) in mirror.children {
- guard let label = labelMaybe else { continue }
- let value = unwrap(valueMaybe)
- dict[label] = convert2Dictionary(value)
- }
- return dict
- }
- } else {
- return any
- }
- }
- func unwrap<T>(_ any: T) -> Any
- {
- let mirror = Mirror(reflecting: any)
- guard mirror.displayStyle == .optional, let first = mirror.children.first else {
- return any
- }
- return first.value
- }
Add Comment
Please, Sign In to add comment