Ios swagger生成带有swift 3代码的类

Ios swagger生成带有swift 3代码的类,ios,swift3,swagger,generated-code,swagger-codegen,Ios,Swift3,Swagger,Generated Code,Swagger Codegen,我正在和斯威格一起工作,我刚刚为斯威夫特3生成了一些类。但是在开发我的应用程序时,当我想把我的对象保存到UserDefaults时,我的应用程序崩溃了,因为我的类没有扩展NSCoding,我想。swift 3有一个命令可以用NSCoding生成我的类?下面是生成我的类的命令: java -jar swagger-codegen-cli-2.2.2.jar generate -i illicity.yaml -l swift3 -DserializableModel=true -o Swift/

我正在和斯威格一起工作,我刚刚为斯威夫特3生成了一些类。但是在开发我的应用程序时,当我想把我的对象保存到UserDefaults时,我的应用程序崩溃了,因为我的类没有扩展NSCoding,我想。swift 3有一个命令可以用NSCoding生成我的类?下面是生成我的类的命令:

java -jar swagger-codegen-cli-2.2.2.jar generate -i illicity.yaml -l swift3 -DserializableModel=true -o Swift/
:
-DserializableModel=true
适用于java/android生成的类

谢谢

解决我的问题: 因此,我编写了自己的模型,以便在我的类中使用NSCoding进行序列化。以下是小胡子模型:

{{#models}}
{{#model}}
//
// {{classname}}.swift
//
// Generated by swagger-codegen
// https://github.com/swagger-api/swagger-codegen
//

import Foundation

{{#description}}

/** {{description}} */{{/description}}
{{#isArrayModel}}
public typealias {{classname}} = [{{arrayModelType}}]
{{/isArrayModel}}
{{^isArrayModel}}
{{#isEnum}}
public enum {{classname}}: {{dataType}} {
{{#allowableValues}}{{#enumVars}}    case {{name}} = "{{{value}}}"
{{/enumVars}}{{/allowableValues}}
    func encodeToJSON() -> Any { return self.rawValue }
}
{{/isEnum}}
{{^isEnum}}
{{#vars.isEmpty}}
public typealias {{classname}} = {{dataType}}
{{/vars.isEmpty}}
{{^vars.isEmpty}}
open class {{classname}}: NSObject, NSCoding {{#parent}}{{{parent}}}{{/parent}}{{^parent}},JSONEncodable{{/parent}} {

{{#vars}}
{{#isEnum}}
    public enum {{enumName}}: {{^isContainer}}{{datatype}}{{/isContainer}}{{#isContainer}}String{{/isContainer}} { {{#allowableValues}}{{#enumVars}}
        case {{name}} = {{#isContainer}}"{{/isContainer}}{{#isString}}"{{/isString}}{{{value}}}{{#isString}}"{{/isString}}{{#isContainer}}"{{/isContainer}}{{/enumVars}}{{/allowableValues}}
    }
{{/isEnum}}
{{/vars}}
{{#vars}}
{{#isEnum}}
    {{#description}}/** {{description}} */
    {{/description}}public var {{name}}: {{{datatypeWithEnum}}}{{^unwrapRequired}}?{{/unwrapRequired}}{{#unwrapRequired}}{{^required}}?{{/required}}{{/unwrapRequired}}{{#defaultValue}} = {{{defaultValue}}}{{/defaultValue}}
{{/isEnum}}
{{^isEnum}}
    {{#description}}/** {{description}} */
    {{/description}}public var {{name}}: {{{datatype}}}{{^unwrapRequired}}?{{/unwrapRequired}}{{#unwrapRequired}}{{^required}}?{{/required}}{{/unwrapRequired}}{{#defaultValue}} = {{{defaultValue}}}{{/defaultValue}}
{{/isEnum}}
{{/vars}}

{{#additionalPropertiesType}}
    public var additionalProperties: [AnyHashable:{{{additionalPropertiesType}}}] = [:]

{{/additionalPropertiesType}}
{{^unwrapRequired}}
    {{^parent}}public override init() {}{{/parent}}{{/unwrapRequired}}
{{#unwrapRequired}}
    public init({{#allVars}}{{^-first}}, {{/-first}}{{name}}: {{#isEnum}}{{datatypeWithEnum}}{{/isEnum}}{{^isEnum}}{{datatype}}{{/isEnum}}{{^required}}?=nil{{/required}}{{/allVars}}) {
        {{#vars}}
        self.{{name}} = {{name}}
        {{/vars}}
    }{{/unwrapRequired}}

    public required init?(coder aDecoder: NSCoder){
        {{#vars}}
        {{#isEnum}}
        self.{{name}} = aDecoder.decodeObject(forKey: "{{name}}") as? {{{datatypeWithEnum}}}
        {{/isEnum}}
        {{^isEnum}}
        self.{{name}} = aDecoder.decodeObject(forKey: "{{name}}") as? {{{datatype}}}
        {{/isEnum}}
        {{/vars}}
    }
{{#additionalPropertiesType}}
    public subscript(key: AnyHashable) -> {{{additionalPropertiesType}}}? {
        get {
            if let value = additionalProperties[key] {
                return value
            }
            return nil
        }

        set {
            additionalProperties[key] = newValue
        }
    }
{{/additionalPropertiesType}}
    // MARK: JSONEncodable
    {{#parent}}override {{/parent}}open func encodeToJSON() -> Any {
        var nillableDictionary = {{#parent}}super.encodeToJSON() as? [String:Any?] ?? {{/parent}}[String:Any?](){{#vars}}{{#isNotContainer}}{{#isPrimitiveType}}{{^isEnum}}{{#isInteger}}
        nillableDictionary["{{baseName}}"] = self.{{name}}{{^unwrapRequired}}?{{/unwrapRequired}}{{#unwrapRequired}}{{^required}}?{{/required}}{{/unwrapRequired}}.encodeToJSON(){{/isInteger}}{{#isLong}}
        nillableDictionary["{{baseName}}"] = self.{{name}}{{^unwrapRequired}}?{{/unwrapRequired}}{{#unwrapRequired}}{{^required}}?{{/required}}{{/unwrapRequired}}.encodeToJSON(){{/isLong}}{{^isLong}}{{^isInteger}}
        nillableDictionary["{{baseName}}"] = self.{{name}}{{/isInteger}}{{/isLong}}{{/isEnum}}{{/isPrimitiveType}}{{#isEnum}}
        nillableDictionary["{{baseName}}"] = self.{{name}}{{^unwrapRequired}}?{{/unwrapRequired}}{{#unwrapRequired}}{{^required}}?{{/required}}{{/unwrapRequired}}.rawValue{{/isEnum}}{{^isPrimitiveType}}
        nillableDictionary["{{baseName}}"] = self.{{name}}{{^unwrapRequired}}?{{/unwrapRequired}}{{#unwrapRequired}}{{^required}}?{{/required}}{{/unwrapRequired}}.encodeToJSON(){{/isPrimitiveType}}{{/isNotContainer}}{{#isContainer}}{{^isEnum}}
        nillableDictionary["{{baseName}}"] = self.{{name}}{{^unwrapRequired}}?{{/unwrapRequired}}{{#unwrapRequired}}{{^required}}?{{/required}}{{/unwrapRequired}}.encodeToJSON(){{/isEnum}}{{#isEnum}}{{#isListContainer}}
        nillableDictionary["{{baseName}}"] = self.{{name}}{{^unwrapRequired}}?{{/unwrapRequired}}{{#unwrapRequired}}{{^required}}?{{/required}}{{/unwrapRequired}}.map({$0.rawValue}).encodeToJSON(){{/isListContainer}}{{#isMapContainer}}//TODO: handle enum map scenario{{/isMapContainer}}{{/isEnum}}{{/isContainer}}{{/vars}}

        {{#additionalPropertiesType}}
        for (key, value) in additionalProperties {
            if let key = key as? String {
               nillableDictionary[key] = value
            }
        }

        {{/additionalPropertiesType}}
        let dictionary: [String:Any] = APIHelper.rejectNil(nillableDictionary) ?? [:]
        return dictionary
    }

    public func encode(with aCoder: NSCoder) {
        {{#vars}}
        aCoder.encode({{name}}, forKey: "{{name}}")
        {{/vars}}
    }
}
{{/vars.isEmpty}}
{{/isEnum}}
{{/isArrayModel}}
{{/model}}
{{/models}}

我认为可以做一些改进。但这正是我想要的。

作为一种解决办法,有一个关于它的公开问题,你可以修改模型胡子模板,将其包括在内。谢谢你,我将编写模型并将其发布在这里和问题上。这个公开问题是否作为一种解决办法,你可以修改模型胡子模板,包括它谢谢你,我会写的模型,并张贴在这里,并在这个问题上