【发布时间】:2021-02-12 08:28:58
【问题描述】:
我相信我在 JSONDecoder 中发现了一个错误。如果尝试解码具有超过 8 个属性的 JSON 对象,我会收到无法识别的错误:
错误:执行被中断,原因:EXCBADACCESS (code=1, 地址=0xe8)。该过程已留在原处 中断,使用“thread return -x”返回之前的状态 表达式求值。
每当我执行类似于以下的代码时都会发生此错误:
struct Objects: Codable {
var NAME1: String?
var NAME2: String?
var NAME3: String?
var NAME4: String?
var NAME5: String?
var NAME6: String?
var NAME7: String?
var NAME8: String?
var NAME9: String?
}
let NEWDATA = """
[
{
"NAME1": "hi",
"NAME2": "hi",
"NAME3": "hi",
"NAME4": "hi",
"NAME5": "hi",
"NAME6": "hi",
"NAME7": "hi",
"NAME8": "hi",
"NAME9": "HELLO"
}
]
""".data(using: .utf8)!
let decoder2 = JSONDecoder()
let product2 = try decoder2.decode([Objects].self, from: NEWDATA)
print(product2)
这发生在 Playground 和设备上。也许我做错了什么,但是当您在 Objects 结构中只有 8 个属性时它可以工作,但当您有 9 个或更多属性时则不行。
Xcode 版本:12.1
Swift 版本:5.3
感谢您的帮助!
【问题讨论】:
-
这确实是 Playground 中的问题,但我在模拟器中没有看到它。
-
在使用 Xcode 12.2 beta 和 iOS 的 macOS 操场上对我来说很好用
-
@JoakimDanielson 可能你的游乐场是 macOS
-
我以前在 iOS Playground 上见过这种情况
-
感谢大家的帮助@gcharita。我在 MacOS 操场上尝试过,它可以工作,然后将其换回 iOS,这似乎修复了操场上的错误。
标签: ios json swift encoder decoder