JSONDecoder的使用
元类型是指类型的类型,包括类类型、结构体类型、枚举类型和协议类型。
类、结构体或枚举类型的元类型是相应的类型名紧跟 .Type。 协议类型的元类型 ——并不是运行时符合该协议的具体类型—— 而是该协议名字紧跟 .Protocol 。比如,类 SomeClass 的元类型就是 SomeClass.Type,协议 SomeProtocol 的元类型就是 SomeProtocal.Protocol。
你可以使用后缀 self 表达式来获取类型。比如,SomeClass.self 返回 SomeClass 本身,而不是 SomeClass 的一个实例。同样, SomeProtocol.self 返回 SomeProtocol 本身 ,而不是运行时符合 SomeProtocol 的某个类型的实例。还可以对类型的实例使用 type(of:) 表达式来获取该实例在运行阶段的类型,如下所示:
在方法 testA 中,第一个参数需要我们传递一个泛型类型T的元类型,泛型类型T 遵守someProtocol 协议,所以不管传递进去的是什么类型(class, 枚举,结构体)的元类型,这个类型本身必须遵守someProtocol 协议。
If the data is not valid JSON, this method throws the DecodingError.dataCorrupted(_:) error. If a value within the JSON fails to decode, this method throws the corresponding error.
DecodingError.dataCorrupted(_:)
An indication that the data is corrupted or otherwise invalid.
Declaration
case dataCorrupted( DecodingError . Context )
Discussion
As an associated value, this case contains the context for debugging.