Swift codable-如何获取位于层次结构中较高位置的结构的属性值?

问题描述 投票:0回答:1

[尝试重构一些旧式JSON解析代码以使用Codable,并尝试重用现有的Swift结构,为简单起见,请考虑以下JSON:

{
    "dateOfBirth":"2016-05-19"
      ...
    "discountOffer":[
        {
            "discountName":"Discount1"
            ...
        },
        {
            "discountName":"Discount2"
            ...
        }
    ]
}

在旧版代码中,Swift struct Discount具有属性'discountType',其值是基于从JSON获得的Member struct的'dateOfBirth'计算的,问题是,如何将Member的dateOfBirth传递给每个Discount结构?还是有一种方法可以让层次结构中较低的结构访问层次结构中较高的结构?

struct Member: Codable {
    var dateOfBirth: Date?
    var discounts: [Discount]?

}

struct Discount: Codable {
    var discountName: String?
    var memberDateOfBirth: Date? // *** Need to get it from Member but how?
    var discountType: String? // *** Will be determined by Member's dateOfBirth

    public init(from decoder: Decoder) throws {
        // self.memberDateOfBirth = // *** How to set from Member's dateOfBirth?????
        // use self.memberDateOfBirth to determine discountType
      ...
    }

}

我无法将解码器的userInfo用作其get属性。我想到将dateOfBirth设置为某​​个地方的静态变量,但听起来像是在跳动。

非常感谢您的帮助。谢谢。

swift struct hierarchy decodable
1个回答
0
投票
您可以这样访问它们
© www.soinside.com 2019 - 2024. All rights reserved.