-
Formatters: Make data human-friendly
Save yourself time and frustration: When you display data in your app — including dates, times, measurements, names, lists, numbers, or strings — learn how to format it correctly and provide a great experience. We'll walk you through the Formatter APIs as well as how SwiftUI works with stringsdict, and show you how they can help do the heavy lifting of formatting data. Learn about best practices and how to avoid common mistakes.
Recursos
- Expanding Your App to New Markets
- Xcode Help: Add language plural variants
- Unicode Date Field Symbol Table
- Displaying Human-Friendly Content
Vídeos relacionados
WWDC22
WWDC21
WWDC20
-
Buscar neste vídeo...
-
-
2:25 - Dates and times
// Dates and Times // Date with Day/Month/Year and Time let dateFormatter = DateFormatter() dateFormatter.dateStyle = .medium dateFormatter.timeStyle = .short dateFormatter.string(from: Date()) // Day of Week + Date + Month let dateFormatter = DateFormatter() dateFormatter.setLocalizedDateFormatFromTemplate ("MMMMdEEEE") dateFormatter.string(from: Date()) // Abbreviated Day of Week let dateFormatter = DateFormatter() dateFormatter.setLocalizedDateFormatFromTemplate ("ccccc") dateFormatter.string(from: Date()) -
5:56 - Date components formatter
// Dates and Times // Date and Time Components let formatter = DateComponentsFormatter() formatter.unitsStyle = .abbreviated let components = DateComponents(hour: 2, minute: 26) formatter.string(from: components) // Date and Time Intervals let formatter = DateIntervalFormatter() formatter.dateTemplate = "dMMM" formatter.string(from: startDate, to: endDate) // Relative Dates and Times let formatter = RelativeDateTimeFormatter() formatter.dateTimeStyle = .named formatter.localizedString(from: DateComponents(day: -1)) -
6:29 - Measurements
// Measurements // Temperature let formatter = MeasurementFormatter() let temperature = Measurement<UnitTemperature> (value: 16, unit: .celsius) formatter.numberFormatter.maximumFractionDigits = 0 formatter.string(from: temperature) // Speed let speed = Measurement<UnitSpeed> (value: 14, unit: .kilometersPerHour) formatter.string(from: speed) // Pressure let pressure = Measurement<UnitPressure> (value: 1.01885, unit: .bars) formatter.string(from: pressure) -
7:49 - Names
// Names let formatter = PersonNameComponentsFormatter() var nameComponents = PersonNameComponents() nameComponents.familyName = "Iwasaki" nameComponents.givenName = "Akiya" nameComponents.nickname = "Aki-chan" // Full Name formatter.string(from: nameComponents) // Short Name: Respects User Preferences formatter.style = .short formatter.string(from: nameComponents) // Abbreviated Name formatter.style = .abbreviated formatter.string(from: nameComponents) -
8:31 - Abbreviated name (monogram)
// Abbreviated Name: Monogram formatter.style = .abbreviated let monogram = formatter.string(from: nameComponents) if (monogram.count <= 2) { // Use Monogram } else { // Use Icon } -
9:23 - Name formatter
// Names let formatter = PersonNameComponentsFormatter() var nameComponents = PersonNameComponents() nameComponents.familyName = "岩崎" nameComponents.givenName = "晃也" nameComponents.nickname = "あきちゃん" // Full Name formatter.string(from: nameComponents) // Short Name: Respects User Preferences formatter.style = .short formatter.string(from: nameComponents) // Abbreviated Name formatter.style = .abbreviated formatter.string(from: nameComponents) -
10:15 - Lists
// Lists // English Localization let items = [ "English", "French", "Spanish" ] ListFormatter.localizedString(byJoining: items) let items = [ "English", "Spanish" ] ListFormatter.localizedString(byJoining: items) let items = [ "Spanish", "English" ] ListFormatter.localizedString(byJoining: items) // Spanish Localization let items = [ "Inglés", "Español" ] ListFormatter.localizedString(byJoining: items) let items = [ "Español", "Inglés" ] ListFormatter.localizedString(byJoining: items) -
12:01 - Numbers
// Numbers let formatter = NumberFormatter() formatter.numberStyle = .decimal formatter.string(from: 32.768) // French (France) let formatter = NumberFormatter() formatter.numberStyle = .decimal formatter.string(from: 32.768) // Arabic (Egypt) formatter.percentSymbol formatter.decimalSeparator -
12:33 - Numbers formatter
// Numbers let formatter = NumberFormatter() formatter.numberStyle = .percent formatter.string(from: 0.71) // English (US) let formatter = NumberFormatter() formatter.numberStyle = .percent formatter.string(from: 0.71) // Turkish (Turkey) -
13:24 - Strings
// Strings var body: some View { Text("\(photosCount) Photos Selected") }
-