//
//  TSBaseModel.swift
//  TSLiveWallpaper
//
//  Created by 100Years on 2024/12/22.
//

import ObjectMapper

open class TSBaseModel: NSObject, Mappable, NSCopying {
    public static func model(data: Data) -> TSBaseModel? {
        do {
            let object = try JSONSerialization.jsonObject(with: data)
            if let dict = object as? [String: AnyHashable] {
                return Self.init(json: dict)
            }
        } catch _ {
            return nil
        }
        return nil
    }
    
    open var data: Data? {
        let json = toJSON()
        do {
            let data = try JSONSerialization.data(withJSONObject: json)
            return data
        } catch _ {
            return nil
        }
    }
    
    required convenience public init?(map: ObjectMapper.Map) {
        self.init()
        mapping(map: map)
    }
    
    required convenience public init?(json: [String: Any]) {
        self.init(JSON: json)
    }
    
    open func mapping(map: ObjectMapper.Map) {}
    
    open func copy(with zone: NSZone? = nil) -> Any {
        let json = toJSON()
        return Self.init(JSON: json) ?? Self.init(JSON: [:])!
    }
    
//    deinit {
//        debugPrint("♻️♻️♻️ TGRootViewController -> \(type(of: self)) deinit ♻️♻️♻️")
//    }
}
