首页 > 解决方案 > 无法访问可编码结构中的默认 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
    }
}

在此处输入图像描述

标签: iosswiftmacos

解决方案


您只需要更改您的描述属性声明并使其成为计算属性:

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), " }
}

推荐阅读