iOS 15格式化新方式
swift算语法很甜的语言了,但是iOS 15之前个格式化需要先 init 一个formatter,然后再根据配置格式化数据, 稍微有点点麻烦。
从iOS 15(macOS 12,watchOS 8……)开始,我们直接像其他面向对象语言一样,直接在数据上.formatted
就好。
iOS 15 Date格式化
代码语言:javascript复制let now = Date()
print(now.formatted())
// 2021/7/18, 12:19 AM
print(now.formatted(date: .complete, time: .omitted))
// Sunday, July 18, 2021
需要ISO8601 API?
代码语言:javascript复制let now = Date()
print(now.formatted(.iso8601.dateSeparator(.dash)))
// 2021-07-17T161944Z
还有更长的语法
代码语言:javascript复制let now = Date()
print(now.formatted(.dateTime.year().month()))
// Jul 2021
print(now.formatted(.dateTime.year(.twoDigits).month(.wide)))
// July 21
.dateTime
可以设置更精确的时间,也可以让你设置地区
let now = Date()
print(now.formatted(.dateTime.locale(Locale(identifier: "cs"))))
// 18. 7. 2021 0:19
number格式化
代码语言:javascript复制print(40.formatted(.percent))
// 40%
print(40.formatted(.currency(code: "eur")))
// ¥40.00
print(0.2948485.formatted(.number.precision(.significantDigits(2))))
// 0.29
可以使用ByteCountFormatter
来格式化文件大小
print(38436483.formatted(.byteCount(style: .file, allowedUnits: .all, spellsOutZero: true, includesExactByteCount: false)))
// 38.4 MB
ListFormatter
也能.formatted
ListFormatter
也能在collection中.formatted
使用。
let appleStuff = ["iPhone", "iPad", "Mac"]
print(appleStuff.formatted())
// iPhone, iPad, and Mac
更多: What's new in Foundation
New approach to formatters in iOS 15