问题描述
场景:包含已从 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 (将#修改为@)