JSONDecoder 无法在 *Mac* 上解码 *值/片段* 类型



有谁知道一种方法来配置Mac版本的JSONDecoder,以便它能够decode片段/值类型?


我正在编写需要在Mac和iOS上运行的Swift代码。 我正在使用DecodableJSONDecoder来尝试解析一些 JSON。 我有一个枚举,Decodable如下:

enum SomeEnum: Int, Decodable {
case valueA = 0
case valueB = 1
}

为了测试这方面的Decodable方面,我进行了这个单元测试......

func test_problem() {
let jsonData = "0".data(using: .utf8)!
let result = try! JSONDecoder().decode(SomeEnum.self, from: jsonData)
XCTAssertEqual(result, SomeEnum.valueA)
}

当针对 iOS 目标运行时,此操作会成功。 但是,当针对"我的Mac"(在Mojave上(运行时,decode调用会引发错误,如下所示:

线程 1:致命错误:"尝试!"表达式意外引发错误: Swift.DecodingError.dataCorrupted(Swift.DecodingError.Context(codingPath: [], debugDescription: "给定的数据不是有效的 JSON。 底层错误:可选(错误域=NSCocoa错误域代码=3840 "JSON 文本不是以数组或对象开头的,并且没有允许的选项 碎片未设置。UserInfo={NSDebugDescription=JSON text not not 从数组或对象开始,并允许未设置片段的选项。

似乎 iOSJSONDecoder能够解码片段/值类型,但 Mac 版本的JSONDecoder不能。

在莫哈韦(以及iOS 12(和更低版本中,您不能。

MacJSONDecoder可以解码 Catalina 10.15.1 及更高版本中的片段

最新更新