 // if you really wannna declare an instance of optional struct type such as Int?, 
 // you must initiate it by yourself（override Model.init(json:) and write your own parsing statements）
 
+
+//NSCoding
 open class Model: NSObject {
     struct PropertyAttributes {
         static let keyType = "T"

        }
    }
    
    /// display property name and value friendly
    override open var description: String {
        let selfClass = type(of: self)
        var desc = "|\(selfClass)| "
        for info in selfClass.propertyInfos() {
            desc += ", "
            desc += info.propertyKey + ": "
            if let propertyValue = value(forKey: info.propertyKey) {
                desc += "\(propertyValue)"
            } else {
                desc += "nil"
            }
        }
        return desc
    }

    /// convert Model to JSON object
    open func json() -> [String: Any] {
        var dictionary = [String: Any]()

        return dictionary
    }
    
    /// convert Model to JSON data
    public func jsonData(options: JSONSerialization.WritingOptions = []) -> Data? {
        return try? JSONSerialization.data(withJSONObject: json(), options: options)
