2

场景:我在 Struct 中有一个用于保存 JSON 数据的结构。
目标:我希望能够通过 init() 填充子结构以进行一些单元测试工作。

struct PortEligibility: Codable {
    var myVar = ""
    struct PortMobileNumber: Codable {
        let one: String?
        let two: String?
        let three: String?
    }
}

我一直在玩弄这个,但我迷路了: 在此处输入图像描述

我不想使用解码器。
补救?

4

2 回答 2

1

如果 struct 基本定义没有任何自定义 init 方法,您将获得成员初始值设定项。

let number = PortEligibility.PortMobileNumber(one: "one", two: "two", three: "three")

此外,您可以提供默认值nilor ""(空字符串)或指定默认值nil与结构的定义一起使用,并使空初始值设定项可用于结构,如下所示:

// Sample 1
let number = PortEligibility.PortMobileNumber(one: nil, two: nil, three: nil)
// or Sample 2
struct PortEligibility: Codable {
    var myVar = ""
    struct PortMobileNumber: Codable {
        var one: String? = nil
        var two: String? = nil
        var three: String? = nil
    }
}
let number = PortEligibility.PortMobileNumber()
于 2020-06-10T20:10:24.097 回答
0

我相信我有解决方案:

let number = PortEligibility.PortMobileNumber(one: "One", two: "Two", three: "Three")

struct PortEligibility: Codable {
    var myVar = ""
    struct PortMobileNumber: Codable {
        var one: String? = nil
        var two: String? = nil
        var three: String? = nil
        init(one: String?, two: String?, three: String?) {
            self.one = one
            self.two = two
            self.three = three
        }
    }

    public func getNumber() -> PortMobileNumber {
        let portMobileNuber = PortMobileNumber(one: "Hello",
                                               two: "Every",
                                               three: "Body")
        return portMobileNuber
    }
}

var portEligibility = PortEligibility()
portEligibility.myVar = "Hello World!"

print(portEligibility)
print(portEligibility.getNumber())

print(number)

输出:

PortEligibility(myVar: "Hello World!") PortMobileNumber(一: Optional("Hello"), 二: Optional("Every"), 三: Optional("Body")) PortMobileNumber(一: Optional("One"),二:可选(“二”),三:可选(“三”))

于 2020-06-10T21:02:37.930 回答