Greetings, traveler!
There are several ways to display formatted string representations of byte counts in Swift. We will figure out how to do it with both ByteCountFormatter
and ByteCountFormatStyle
. Let’s check some examples using SwiftUI.
ByteCountFormatter
ByteCountFormatter
in Swift can format byte counts into human-readable strings like “10 MB” or “1.24 GB”. Using ByteCountFormatter
in SwiftUI is pretty straightforward. Here’s how you can do it:
struct ContentView: View {
@State private var byteCount: Int64 = 1024
var body: some View {
Text(ByteCountFormatter.string(fromByteCount: byteCount, countStyle: .file))
}
}
If you want to make sure the formatter only uses specific units, you can do something like this:
struct ContentView: View {
@State private var byteCount: Int64 = 1024
private let formatter: ByteCountFormatter = {
let formatter = ByteCountFormatter()
formatter.allowedUnits = [.useKB, .useMB, .useGB]
return formatter
}()
var body: some View {
Text(formatter.string(fromByteCount: byteCount))
}
}
ByteCountFormatStyle
You can also display byte counts with the ByteCountFormatStyle
struct. Let’s figure out how to do it:
struct ContentView: View {
@State private var byteCount: Int64 = 1024
var body: some View {
// "1 kB"
Text(byteCount.formatted(.byteCount(style: .file)))
}
}
You can customize this style as well.
struct ContentView: View {
@State private var byteCount: Int64 = 1024
private let style = ByteCountFormatStyle(
style: .memory,
allowedUnits: [.kb],
spellsOutZero: true,
includesActualByteCount: false,
locale: Locale(identifier: "en_US")
)
var body: some View {
// "1 kB"
Text(style.format(byteCount))
}
}
If you enjoyed this article, please feel free to follow me on my social media: