gpt4 book ai didi

ios - 我可以更简单地使用 Swift 将整数转换为特定格式的字符串吗?

转载 作者:行者123 更新时间:2023-11-28 09:35:27 24 4
gpt4 key购买 nike

在我的音频应用程序中,我正在使用进度 slider 播放音频——在 UI 中,我想显示剧集播放的时间量。以下是我的做法。

   @objc func updateSlider(){

Slider.value = Float(audioPlayer.currentTime)

func secondsToHoursMinutesSeconds (seconds : Int) -> (Int, Int, Int) {
return (seconds / 3600, (seconds % 3600) / 60, (seconds % 3600) % 60)
}

let example = (Float(audioPlayer.currentTime))
let myIntValue = Int(example)
self.goneTime.text = String(Float(describing: myIntValue)

此代码动态更新标签,但它以指定的 (Int, Int, Int) 格式执行。示例输出:(1, 5, 20) 当我想要 1:5:20 时。

我尝试修改标记为错误的格式 (Int/Int/Int)。

一个变通办法——但一个丑陋的变通办法——我找到了using this Swift 3 answer :使用 .replacingOccurrencesOf。来自documentation ,它表示您可以一次替换字符串的一部分。

所以我将我的代码更改为:

 func secondsToHoursMinutesSeconds (seconds : Int) -> (Int, Int, Int) {
return (seconds / 3600, (seconds % 3600) / 60, (seconds % 3600) % 60)
}

let example = (Float(audioPlayer.currentTime))
let myIntValue = Int(example)

let updated = secondsToHoursMinutesSeconds(seconds: myIntValue)

let updated2 = String(describing: updated)

let str2 = updated2.replacingOccurrences(of: ",", with: ":", options:
NSString.CompareOptions.literal, range: nil)

let str3 = str2.replacingOccurrences(of: "(", with: "", options:
NSString.CompareOptions.literal, range: nil)

self.goneTime.text = str3

这工作正常,但是否有简化这些类型修改的最佳实践? Swift 的新手和学习者。

最佳答案

AVAudioPlayer currentTime 实例属性返回一个 TimeInterval (Double)。您应该使用 DateComponentsFormatter 并将 unitsStyle 设置为位置:

extension Formatter {
static let positional: DateComponentsFormatter = {
let formatter = DateComponentsFormatter()
formatter.unitsStyle = .positional
return formatter
}()
}

Playground 测试:

let seconds: TimeInterval = 3920
let display = Formatter.positional.string(from: seconds) // "1:05:20"

在你的案例中的用法:

goneTime.text = Formatter.positional.string(from: audioPlayer.currentTime)

关于ios - 我可以更简单地使用 Swift 将整数转换为特定格式的字符串吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48237577/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com