123456789101112131415161718192021222324 |
- //
- // Codable+Sweeter.swift
- //
- // Created by Yonat Sharon on 2019-02-08.
- //
- import Foundation
- public extension Decodable {
- /// Sweeter: Create object from a dictionary
- init?(dictionary: [String: Any]) {
- guard let data = try? JSONSerialization.data(withJSONObject: dictionary, options: .prettyPrinted) else { return nil }
- guard let decodedSelf = try? JSONDecoder().decode(Self.self, from: data) else { return nil }
- self = decodedSelf
- }
- }
- public extension Encodable {
- /// Sweeter: Export object to a dictionary representation
- var dictionary: [String: Any]? {
- guard let data = try? JSONEncoder().encode(self) else { return nil }
- return (try? JSONSerialization.jsonObject(with: data, options: .allowFragments)).flatMap { $0 as? [String: Any] }
- }
- }
|