嗨,大家好,
我正在使用以下方法将来自后端系统的数据解码为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)
}
}
}
答案 0 :(得分:0)
更改此行:
JSONDecoder().decode(vrOpsObjectStatistics.self, from: jsonData);
到
JSONDecoder().decode(VrOpsObjectStatistics.self, from: jsonData)
decode(_:from:)
方法需要一种类型的元类型,可以通过在类型而不是该类型的实例上调用.self
来找到它。要了解有关元类型类型的更多信息,请查看here。