映射/过滤数据流元素以转换其数据类型的正确语法是什么?

问题描述

场景:包含已从 Int 类型更改为 String 类型的项目的数据流导致 JSON 解析器崩溃。

结果:订阅者“接收器”崩溃,数据类型与通过 JSON 解析器的原始接收类型不匹配。

目标:Int 值转换为 String 以获得成功解析的一致流。

这是导致崩溃的数据流片段:

...
{
  "city": "אלון שבות","sickCount": 124,"actualSick": 15,"verifiedLast7Days": " 11-14 ","testLast7Days": 699,"patientDiffPopulationForTenThousands": 47
},{
  "city": "סייד (שבט)","sickCount": " קטן מ-15 ","actualSick": " קטן מ-15 ","verifiedLast7Days": "  0  ","testLast7Days": 17,"patientDiffPopulationForTenThousands": 4
},...

这是通过控制台的错误:

CodingKeys(stringValue: "sickCount",intValue: nil)],debugDescription: "预期解码 Int 但找到了一个字符串/数据。",underlyingError: nil))

代码如下:

func getData() {
    let str = "https://disease.sh/v3/covid-19/gov/Israel"
    let url = URL(string: str)!
    let remoteDataPublisher = URLSession.shared.dataTaskPublisher(for: url)
        .map(\.data)
        .receive(on: DispatchQueue.main)
        .decode(type: IsraelDataElement.self,decoder: JSONDecoder())
    
    remoteDataPublisher
        .eraseToAnyPublisher()
        .sink(receiveCompletion: { completion in
            switch completion {
            case .finished:
                print("{IsraelModel} Publisher Finished")
            case let .failure(anError):
                Swift.print("\nIsrael - Received error: #function",anError)
            }
        },receiveValue: { someData in
            self.add_UUID(origData: someData)
            print(someData)
        }).store(in: &cancellables)
}

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)