如何解决JSON解码器Swift的潜在错误
我相信我在JSONDecoder中发现了一个错误。如果尝试解码具有8个以上属性的JSON对象,则会收到无法识别的错误:
错误:执行被中断,原因:EXCBADACCESS(代码= 1, 地址= 0xe8)。该过程已留在原处 中断后,使用“线程返回-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)
在游乐场和设备上都会发生这种情况。也许我做错了,但是当您在Objects结构中只有8个属性时,它可以工作,但当您有9个或更多属性时,它就不能工作。
Xcode版本:12.1
快速版本:5.3
感谢您的所有帮助!
解决方法
注意到@TheSlyTurtle,您也在 Apple 开发者论坛上提出了这个 JSONDecoder Limit 问题。
另一位用户 Claude31 和我自己独立提出了对“反馈助手”的反馈。参见 FB9080056 和 FB9393489。
Apple 在 2021 年 7 月 27 日的回复如下:
嗨,麦克斯
感谢您的耐心和反馈。请验证 这是否仍然是 Xcode 13 beta 中的问题。有工具 自从提交此文件以来进行了更新,并且在我们的测试中未发现此问题。
请使用最新的 Beta 版进行测试,然后更新您的反馈 通过登录报告您的结果 https://feedbackassistant.apple.com 或使用反馈助手 应用。
Xcode 13、macOS 12 和 iOS 15 Beta 版和候选发布版: https://developer.apple.com/download/
如果问题仍然存在,请提供适当的新日志和 屏幕录像: https://developer.apple.com/bug-reporting/profiles-and-logs/
如果解决,请关闭此报告,如果问题仍然存在,请告诉我们 为你。谢谢。
反馈 ID 9080056,Playground 执行中止,结构为第九 属性
请勿回复此电子邮件。请登录反馈助手查看 这个请求。
我和 Claude31 都表示,从 Xcode 13 beta 4 (13A5201i) 开始,此缺陷不再出现。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。