44 lines
936 B
Swift
44 lines
936 B
Swift
//
|
|
// Asset.swift
|
|
// lottie-swift
|
|
//
|
|
// Created by Brandon Withrow on 1/9/19.
|
|
//
|
|
|
|
import Foundation
|
|
|
|
public class Asset: Codable, DictionaryInitializable {
|
|
|
|
// MARK: Lifecycle
|
|
|
|
required public init(from decoder: Decoder) throws {
|
|
let container = try decoder.container(keyedBy: Asset.CodingKeys.self)
|
|
if let id = try? container.decode(String.self, forKey: .id) {
|
|
self.id = id
|
|
} else {
|
|
id = String(try container.decode(Int.self, forKey: .id))
|
|
}
|
|
}
|
|
|
|
required init(dictionary: [String: Any]) throws {
|
|
if let id = dictionary[CodingKeys.id.rawValue] as? String {
|
|
self.id = id
|
|
} else if let id = dictionary[CodingKeys.id.rawValue] as? Int {
|
|
self.id = String(id)
|
|
} else {
|
|
throw InitializableError.invalidInput
|
|
}
|
|
}
|
|
|
|
// MARK: Public
|
|
|
|
/// The ID of the asset
|
|
public let id: String
|
|
|
|
// MARK: Private
|
|
|
|
private enum CodingKeys: String, CodingKey {
|
|
case id
|
|
}
|
|
}
|