【问题标题】:Migration from Swift 2.3 to 3.0 Invalid type in JSON write从 Swift 2.3 迁移到 3.0 JSON 写入中的无效类型
【发布时间】:2017-08-20 01:54:51
【问题描述】:

我有以下

class :class JsonDomain : EVObject {
    func jsonValue() -> NSDictionary {
        return self.toDictionary()
    }
}

class TokenValor :JsonDomain {
    var to : Token!
    var valor : NSDecimalNumber = 0

    convenience init(to : Token?, valor : NSDecimalNumber?) {
        self.init()
        self.to =  to!
        self.valor = getOptionalDecimalValue(valor)
    }

    override func jsonValue() -> NSDictionary {
        let cifrado = Token()
        cifrado.chave = CryptService.cifrar(to.chave)
        let tokenValor = TokenValor(to: cifrado, valor: self.valor)
        return tokenValor.toDictionary()
    }


    override func getValidationsArray() ->  JsonTypeValidation {
        return [("to","Token"),("valor", "Valor")]
    }
}

jsonValue() 方法返回给我:

{
to = "令牌 = {\n "chave" : "-100;76;-79;81;81;-18;76;23;"\n}";
勇气 = 50;
}

这给了我以下错误:“由于未捕获的异常 'NSInvalidArgumentException' 导致应用程序终止,原因:'JSON 写入 (MyApp.Token) 中的类型无效'”

我目前正在使用 Swift 3、带有分支“Swift3”的 EvReflection 和 SwiftyJSON 3.1.4。 当使用带有版本 EvReflection 2.6 的 Swift 2.3 时没有给出这个错误

感谢关注

【问题讨论】:

    标签: json swift3 migration


    【解决方案1】:

    我刚刚将 EVReflection 更新到主分支。我将代码更改为:

    class TokenValor : JsonDomain
    {
        var to : Token?
        var valor : NSDecimalNumber = 0
    
        convenience init(to : Token, valor : NSDecimalNumber?) {
            self.init()
            self.to =  to
            self.valor = getOptionalDecimalValue(valor)
        }
    
        override func jsonValue() -> NSDictionary {
            let cifrado = Token()
            cifrado.chave = CryptService.cifrar((to?.chave)!)
            let tokenValor = TokenValor(to: cifrado, valor: self.valor)
            return tokenValor.toDictionary()
        }
    
    
        override func getValidationsArray() ->  JsonTypeValidation {
            return [("to","Token"),("valor", "Valor")]
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-28
      • 1970-01-01
      相关资源
      最近更新 更多