字符串格式重载不可用

时间:2018-05-16 19:29:34

标签: swift

我正在尝试使用现有变量格式化字符串,以便我可以显示时间,这是代码:

func timeString(time:TimeInterval) -> String
{
    let hours = Int(time) / 3600
    let minutes = Int(time) / 60 % 60
    let seconds = Int(time) % 60
    return String(format: ”%02i:%02i:%02i”, hours, minutes, seconds)
}

但是,当我创建一个新的String对象时,没有重载来传递'format'参数。

enter image description here

结果,这给了我三个不同的错误,我认为这些错误源于这个缺失的过载。

我一定忽略了一些基本的东西(可能是我没有导入的库)但我在文档中找不到任何解决方法。

我导入的库是'UIKit'和& '基础'

2 个答案:

答案 0 :(得分:1)

为了完整性 - @MartinR注意到字符串周围的引号不是合法的双引号,导致问题出现。

正如@Alexander所指出的,我应该使用DateIntervalFormatter,因为(正如@rmaddy所解释的那样)我将得到一个正确的国际化结果。

答案 1 :(得分:0)

我不完全确定你要求的是什么,但我认为使用timeString(time: )函数为String创建初始值设定器是个好主意。

func timeString(time:TimeInterval) -> String {
    let hours = Int(time) / 3600
    let minutes = Int(time) / 60 % 60
    let seconds = Int(time) % 60
    return String(format: "%02i:%02i:%02i", hours, minutes, seconds)
}

extension String {
    init (time: TimeInterval) {
        self = timeString(time: time)
    }
}

这将允许您获取TimeInterval值(在以下用法示例中,我假设您已经声明了一个变量,其中TimeInterval要转换为String }:timeInterval}并且更容易将其转换为String

let timeInterval : TimeInterval = yourTimeInterval

let timeString = String(time: timeInterval)

我希望这有助于解决您的问题!