Я пытаюсь реализовать протокол с функциональностью, аналогичной тому, как Codable
использует CodingKeys
перечисление.
С Codable
и CodingKeys
, если вы не реализуете регистр в перечислении CodingKeys
для каждого свойства объекта Codable
, это вызывает ошибку компилятора, указывающую, что объект не соответствует протоколу.
Я просмотрел документацию, и единственное, что я смог найти, связанное с протоколом Codable
(Encodable
и Decodable
), - это требование реализации функций func encode(to encoder: Encoder)
и init(from decoder: Decoder)
.
Самое близкое, что я получил, - это определение протокола следующим образом:
protocol TestProtocol {
associatedType Keys: CodingKey
}
Это требует, чтобы разработчик имел свойство Keys
, которое соответствует CodingKey
, но не требует наличия регистра для всех свойств. Кроме того, вы не можете объявить свойство Keys
частным, как это можно сделать с помощью Codable
.
Обрабатываются ли Codable
и CodingKeys
на более глубоком уровне, чем то, что предоставляется через API?
Если нет, есть ли способ реализовать CodingKeys
функциональность за пределами Codable
?