【发布时间】:2019-05-18 10:11:14
【问题描述】:
我有一个返回 JSON 对象数组的 API。我已将结构设置为如下所示:
typealias MyModels = [MyModel]
struct MyModel: Codable {
let field1: String
let field2: String
let mySubModel: SubModel?
enum CodingKeys: String, CodingKey {
case field1 = "Field1"
case field2 = "Field2"
case mySubModel = "MySubModel"
}
}
struct SubModel: Codable {
let subModelField1: String
let subModelField2: String
enum CodingKeys: String, CodingKey {
case subModelField1 = "SubModelField1"
case subModelField2 = "SubModelField2"
}
}
我想要做的是添加这个扩展,提供一个路径变量(NetworkModel 协议为 API 操作提供了一些基本功能):
extension MyModels: NetworkModel {
static var path = "the/endpoint/path"
}
当基是对象或 json 键时,我以这种方式设置的其他模型/结构类没有任何问题。但是,由于这个不同并且只是一个数组,所以当我将该扩展名放入类中时会出现此错误:
约束扩展必须在非特化泛型类型“数组”上声明,约束由“where”子句指定
我已经进行了一些挖掘并尝试了一些关于扩展的 where 子句的事情,但我对它想要什么感到有点困惑。我敢肯定这很简单,但是对此有什么想法吗?如果我需要使用上面的 typealias 以不同的方式处理它,我可以接受。提前致谢!
【问题讨论】:
标签: ios swift collections swift-extensions type-alias