Просто добавьте .capitalized
в конце отформатированной строки.
func secondsToString(_ seconds: Int) -> String {
let formatter = DateComponentsFormatter()
formatter.unitsStyle = .full
formatter.allowedUnits = [.second]
return formatter.string(from: DateComponents(second: seconds))?.capitalized ?? ""
}
Примечание: В этом решении будут использованы все слова, возвращаемые методом.Для вашего случая использования этого должно быть достаточно, потому что даже если вы добавите больше единиц времени, если бы я их использовал с заглавной буквы, я бы предпочел использовать все из них с заглавной буквы.
Итак, если бы вы изменилив некотором роде и хотите, чтобы только первое слово было написано заглавными, вы можете попробовать это: (Первое слово означает первое слово, которое содержит букву)
func secondsToString(_ seconds: Int) -> String {
let formatter = DateComponentsFormatter()
formatter.unitsStyle = .full
formatter.allowedUnits = [.second, .hour, .day]
let string = formatter.string(from: DateComponents(second: seconds)) ?? ""
var substrings = string.components(separatedBy: " ")
// Using for...each would make the iterating element a constant and hence i would have to find the index and replace it using the index
for i in 0...substrings.count {
if let firstCharacter = substrings[i].unicodeScalars.first, CharacterSet.letters.contains(firstCharacter) {
substrings[i] = substrings[i].capitalized
break
}
}
let finalString = substrings.joined(separator: " ")
return finalString
}