60
|
Guillermo Alvarez · 技术社区 · 7 年前 |
![]() |
1
92
您可以使用两种不同的日期格式化程序(带和不带分数秒)并创建自定义DateDecodingStrategy。如果解析API返回的日期失败,您可以抛出DecodingError,正如@PauloMattos在注释中所建议的那样:
习俗 ISO8601
习俗
: Xcode 10 Swift 4.2或更高版本iOS 11.2.1或更高版本
海关
|
![]() |
2
4
Swift 5要将ISO8601字符串解析到日期,必须使用DateFormatter。在较新的系统(例如iOS11+)中,您可以使用ISO8601DateFormatter。 只要不知道日期是否包含毫秒,就应该为每种情况创建2个格式化程序。然后,在分析字符串到日期的过程中,使用这两种方法。 旧系统的日期格式化程序
适用于较新系统的ISO8601数据格式(如iOS 11以上)
总结Tomorrow on GitHub 你们可以看到这个问题的整个解决方案。 要将字符串转换为您使用的日期:
|
![]() |
3
3
一个新选项(从Swift 5.1开始)是属性包装器。这个 CodableWrappers 对于默认ISO8601
|
![]() |
4
0
,您可以将其用作日期解码策略:
例如:
添加分数部分
将产生相同的输出:
但是,使用不正确的字符串:
如果数据不正确,将打印默认的Swift错误:
|