【发布时间】:2018-04-11 12:32:29
【问题描述】:
以下代码在 Xcode 9.2 (Swift 4.0) 中有效,但在 Xcode 9.3 (Swift 4.1) 中出错。
let dict: [String: Any] = [
"status_code": 5,
"status_message": "message"
]
let data = try! JSONEncoder().encode(dict)
// ^ generic parameter 'T' could not be inferred
我尝试制作字典[String: Encodable],并对两种字典类型使用typealias,结果相同。 Swift 不允许您在泛型调用中指定类型,因此会产生编译器错误。这在 Swift 4.1 中应该是什么样子?
【问题讨论】:
-
如果您正在寻找解决方案,那么您应该使用
Struct而不是Dictionary。 -
@LucaAngeletti 我确实为我的实际代码使用了结构。这是在一个单元测试中,我正在构建一个非典型响应,所以我想保持它的松散类型。如果需要,我可以在函数中定义一个临时结构,但如果可能的话,我想使用字典
-
Encodable是一种协议,而不是一种类型。