ios - 无法访问可编码结构中的默认 CustomStringConvertible `description` 变量值
问题描述
由于项目的要求,这是一个奇怪的问题。本质上,我有符合结构Codable
并且CustomStringConvertible
我正在使用它来解码 JSON,但是我需要使用 description 的默认实现,我似乎无法这样做,因为 description 没有匹配的 CodingKey 并且没有默认值。有什么方法可以在不使用我自己的自定义字符串的情况下访问描述的默认值?下面的例子
struct Source: CustomStringConvertible {
var description: String
var symbol: String
var line: Int
var image: String
var file: String
}
extension Source: Codable {
private enum CodingKeys : String, CodingKey {
case symbol
case line
case image
case file
}
}
解决方案
您只需要更改您的描述属性声明并使其成为计算属性:
var description: String { "Source - Symbol: \(symbol), Line: \(line), Image: \(image), File: \(file), " }
请注意,无需显式声明编码键:
struct Source: Codable {
let symbol, image, file: String
let line: Int
}
extension Source: CustomStringConvertible {
var description: String { "Source - Symbol: \(symbol), Line: \(line), Image: \(image), File: \(file), " }
}
推荐阅读
- machine-learning - SVM 中的网格搜索根本没有改进模型
- reactjs - 将流式值设置为 React 状态
- python - 小于 < 符号不适用于日期 pandas python
- amazon-web-services - 带有 Kinesis 流 2 个分片的 AWS Lambda
- html - 如何让刻度转到短文本行的左侧(见截图) HTML & CSS
- javascript - 是否可以在输入元素上使用多种类型属性
- c# - 使用 IIS 的 Asp.Net Core API 响应错误的 json 编码
- jenkins-job-dsl - 在 Jenkins 配置中基于每个文件将变量传递为代码作业 DSL
- raspberry-pi - `/usr/bin/python3' 中的错误:free():无效指针:0x00403eb0
- ruby-on-rails - 在 after_action 回调中设置变量