swift - 什么决定了协议一致性的优先级?
问题描述
只是对某事感到好奇。
private enum CodingKeys: String, CodingKey {
case id = "page"
}
如果我将 String 放在 CodingKey 协议之后,我会收到一条错误消息,说我需要将 String 放在之前.. 什么决定了优先级,为什么这很重要?提前致谢。
解决方案
协议一致性顺序无关紧要。String
在您的情况下,当您放置在CodingKey
is 因为String
不是协议时,您会收到错误。它是一个结构。看看你在 Xcode 中得到的错误信息:
原始类型“字符串”必须首先出现在枚举继承子句中
通过放置String
在枚举声明之后将定义其原始值。
为了证明这一点,让我们定义两个协议:
protocol Protocol1 { }
protocol Protocol2 { }
并尝试更改它们符合您的CodingKeys
枚举的顺序。这将是有效的:
private enum CodingKeys: String, CodingKey, Protocol1, Protocol2 {
case id = "page"
}
这也是有效的:
private enum CodingKeys: String, CodingKey, Protocol2, Protocol1 {
case id = "page"
}
推荐阅读
- javascript - 通过 PHP 和 jQuery 注入 HTML 出错了
- kubernetes - 在 Kubernetes (GKE) 上创建 cockroachdb 用户证书的最后一步
- html - 定位 CSS 列布局中的特定列
- graphql - 在短 GraphQL 查询上返回 null
- reactjs - 带有 express 后端的 Create-react-app 在本地工作,但在部署到 heroku 时路由不正确
- ruby - 只要有更多内容要显示,Watir 就会向下滚动页面
- java - 在验证多个 URL 时无法在 java 中找到请求目标的有效证书路径
- javascript - D3 forceX/forceY 和 forceCenter 的区别
- python - 使用 asyncio 创建两个并发异步任务
- c++ - 为什么顶点数组对象会导致错误?