无法将以下类型的值转换:GameData-可编码,为预期的参数数据

时间:2019-04-19 15:03:11

标签: swift function data-conversion

我正在尝试将类型data的JSON响应AnyObject?解码回可以在控制台中打印出来或与之交互的内容。

读回数据,然后解码打印projectName.GameData

这是细分,数据从响应中返回,其类型为:Any?,因为它以

的形式发送

class GameData : Codable {

    var isPlayerOneTurn: Bool!
    var wasCreated: Bool!
    var playerOne: String!
    var playerTwo: String!
    var board: [[Int]]!

   init() {

    }
}

尝试解码时遇到的当前错误是Cannot convert value of type 'GameData' to expected argument type 'Data'

代码:

let decoder = JSONDecoder()
let dataTest = try? decoder.decode(GameData.self, from: data)

我在GameData类上缺少正确的init()方法吗?

更新: 数据已更改为此处的Data类型:谢谢@rmaddy指出了这一点。

 let data = data as? Data

 let decoder = JSONDecoder()
 let dataTest = try? decoder.decode(GameData.self, from: data!)

 print("data: \(String(describing: dataTest))")

打印行仍显示data: Optional(projectName.GameData)

这里仍然有什么问题,不允许我查看GameData类的值吗?

1 个答案:

答案 0 :(得分:0)

问题中提到的打印行是游戏对象解码的值。这就是XCode将会打印出的所有内容-解码之前原始对象的名称。从对象访问数据时,使用dataTest.myValue有用。