有谁知道一种方法来配置Mac版本的JSONDecoder
,以便它能够decode
片段/值类型?
我正在编写需要在Mac和iOS上运行的Swift代码。 我正在使用Decodable
和JSONDecoder
来尝试解析一些 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 及更高版本中的片段