Guest User

Untitled

a guest
Oct 19th, 2018
92
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.95 KB | None | 0 0
  1. func convert2Dictionary<T>(_ any: T) -> Any {
  2. let mirror = Mirror(reflecting: any)
  3.  
  4. if let style = mirror.displayStyle {
  5. if style == .collection {
  6. var array: [Any] = []
  7. for (_, valueMaybe) in mirror.children {
  8. let value = unwrap(valueMaybe)
  9. array.append(convert2Dictionary(value))
  10. }
  11. return array
  12. } else {
  13. var dict: [String: Any] = [:]
  14. for (labelMaybe, valueMaybe) in mirror.children {
  15. guard let label = labelMaybe else { continue }
  16. let value = unwrap(valueMaybe)
  17. dict[label] = convert2Dictionary(value)
  18. }
  19. return dict
  20. }
  21. } else {
  22. return any
  23. }
  24. }
  25.  
  26. func unwrap<T>(_ any: T) -> Any
  27. {
  28. let mirror = Mirror(reflecting: any)
  29. guard mirror.displayStyle == .optional, let first = mirror.children.first else {
  30. return any
  31. }
  32. return first.value
  33. }
Add Comment
Please, Sign In to add comment