首页 > 解决方案 > 用户设备数据属性编码失败,但在另一台设备上工作

问题描述

我们的少数用户有一个非常不寻常的错误(已知数以千计的不到 10 个)。我们存储在 coreData 中的一些对象使用日期类型。出于某种原因,在特定人的设备上,每当 JSON 尝试将 dateString 映射到我们的格式化程序时,一些对象会在初始化期间失败。

static let iso8601DateTime: DateFormatter = {
    let formatter = DateFormatter()
    formatter.timeZone = TimeZone(secondsFromGMT: 0)[enter image description here][1]
    formatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSSZ"
    return formatter
}()

当我设置断点时,所有 JSON 时间字符串都以这种格式出现:

我很困惑为什么有些对象在那时成功映射,而其他对象却失败了,尽管它们都以这种格式返回。通过更改,我在 Apple 的支持网站上阅读了有关 ISO8601 语言和地区的问题。我将他的地区从美国 -> 英国 -> (回到)美国更改了,发现所有问题都已解决,他可以正常使用该应用程序。

我收到的一些建议说要为 dateformatter 指定一个语言环境,但我还不能测试。

formatter.locale = Locale(identifier: "en_US_POSIX")

知道为什么基本上软刷新此设置可以解决它(设置为另一个然后再返回)?

标签: iosswiftdatensdateformatter

解决方案


推荐阅读