【问题标题】:Potential Bug with JSON Decoder SwiftJSON解码器Swift的潜在错误
【发布时间】: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


【解决方案1】:

注意到 @TheSlyTurtle 您还在 Apple 开发者论坛上提出了这个 JSONDecoder Limit 问题。

另一位用户 Claude31 和我自己独立提出了关于反馈助手的反馈。参见 FB9080056 和 FB9393489。

Apple 在 2021 年 7 月 27 日回复如下:

嗨,麦克斯,

感谢您的耐心等待和反馈。请验证 这在 Xcode 13 beta 中是否仍然是一个问题。已经有了工具 自提交以来更新,并且在我们的测试中未发现此问题。

请使用最新的测试版进行测试,然后更新您的反馈 通过登录报告您的结果 https://feedbackassistant.apple.com 或使用反馈助手 应用程序。

Xcode 13、macOS 12 和 iOS 15 测试版和候选发布版: https://developer.apple.com/download/

如果问题仍然存在,请提供适当的新日志并 屏幕录像: https://developer.apple.com/bug-reporting/profiles-and-logs/

如果问题已解决,请关闭此报告,如果问题仍然存在,请告诉我们 为你。谢谢。

反馈 ID 9080056,Playground 执行中止,结构在第九个 属性

请勿回复此电子邮件。请登录反馈助手查看 这个请求。

我和 Claude31 都表示,从 Xcode 13 beta 4 (13A5201i) 开始,此缺陷不再出现。

【讨论】:

    猜你喜欢
    • 2018-02-07
    • 2018-09-19
    • 2018-06-09
    • 1970-01-01
    • 1970-01-01
    • 2021-02-22
    • 1970-01-01
    相关资源
    最近更新 更多