Swift Decoder Невозможно вызвать 'decode' со списком аргументов типа '(VrOpsObjectStatistics !, from: Data)' - PullRequest
0 голосов
/ 28 сентября 2018

Привет, ребята,

Я декодирую данные, поступающие из бэкэнд-системы в 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 голосов
/ 28 сентября 2018

Измените эту строку:

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

на

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

Метод decode(_:from:) ожидает мета-тип типа, который можно найтивызывая .self для типа, а не для экземпляра этого типа.Чтобы узнать больше о типе мета-типа, посмотрите здесь .

...