ios - Swift 扩展 - 必须在非专用泛型类型“数组”上声明约束扩展
问题描述
我有一个返回 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 以不同的方式处理它,我可以接受。提前致谢!
解决方案
我假设你的意思是
extension MyModels: NetworkModel {
有错误吗?你似乎错过了s
那里。
该错误基本上是告诉您这样做:
extension Array : NetworkModel where Element == MyModel {
static var path = "the/endpoint/path"
}
您不能简单地扩展[MyModel]
.
推荐阅读
- node.js - Node.js - FireBas - 函数,TypeError:无法读取未定义的属性“user_id”
- python - 查找 pip 包:pkg_resources 指定自定义目标目录
- javascript - 对象创建期间的字段评估
- azure - 增加 Azure 应用服务计划的存储
- mongodb - 子文档键上的 MongoDB 索引
- r - 根据条件连接行中的值
- python - 如何在自定义页面 Django 中使用管理表单
- python - python拆分字符串并列出完整路径名
- c# - 确定在运行时在 C# 中使用什么实现
- java - 更改表格模型后编辑 JTable 单元格错误