Swift解码器无法使用类型为'(VrOpsObjectStatistics !, from:Data)'的参数列表调用'decode'

时间:2018-09-27 21:12:47

标签: json swift struct decodable jsondecoder

嗨,大家好,

我正在使用以下方法将来自后端系统的数据解码为JSON: JSONDecoder().decode(<#T##type: Decodable.Protocol##Decodable.Protocol#>, from: <#T##Data#>)

我经常针对不同类型的数据类型执行此操作,但是这次出现以下错误:"Cannot invoke 'decode' with an argument list of type '(VrOpsObjectStatistics!, from: Data)"

这是我的结构和解码过程的部分代码:

我的结构:

struct  VrOpsObjectStatistics : Decodable
{
    var resourceId: String
    struct StatList : Decodable
    {
        struct Stat : Decodable
        {
            var timestamps: [Date]
            struct StatKey : Decodable
            {
                var key: String
            }
            var statKey: StatKey
            var data: [Double]
        }
        var stat: [Stat]
    }

  }
    final class Ops
    {
            static let sharedVrOps  = VrOps();
            var vrOpsObjectStatistics : VrOpsObjectStatistics!;
        func decodeDataToJson(jsonData : Data, parsingType : String) -> 
(Bool, Any)
        {
         do  
         {
         self.vrOpsObjectStatistics = try 
      JSONDecoder().decode(vrOpsObjectStatistics.self, from: jsonData);
         }
    catch
            {
                print(error)
                return (false, error)
            }

    }
}

1 个答案:

答案 0 :(得分:0)

更改此行:

JSONDecoder().decode(vrOpsObjectStatistics.self, from: jsonData);

JSONDecoder().decode(VrOpsObjectStatistics.self, from: jsonData)

decode(_:from:)方法需要一种类型的元类型,可以通过在类型而不是该类型的实例上调用.self来找到它。要了解有关元类型类型的更多信息,请查看here