只是对某件事感到好奇。
private enum CodingKeys: String, CodingKey {
case id = "page"
}
如果我将 String 放置在 CodingKey 协议(protocol)之后,我会收到一条错误消息,指出我需要将 String 放置在之前……那么什么决定了优先级,为什么这很重要?提前致谢。
最佳答案
协议(protocol)一致性顺序并不重要。在您的情况下,当您将 String
放在 CodingKey
之后时,您会收到错误,因为 String
不是协议(protocol)。它是一个结构体。查看 Xcode 中收到的错误消息:
Raw type 'String' must appear first in the enum inheritance clause
通过在枚举声明之后放置 String
将定义其原始值。
为了证明这一点,让我们定义两个协议(protocol):
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"
}
关于swift - 什么决定了协议(protocol)一致性的优先级?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66583312/