我正在尝试使用现有变量格式化字符串,以便我可以显示时间,这是代码:
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'参数。
结果,这给了我三个不同的错误,我认为这些错误源于这个缺失的过载。
我一定忽略了一些基本的东西(可能是我没有导入的库)但我在文档中找不到任何解决方法。
我导入的库是'UIKit'和& '基础'
答案 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)
我希望这有助于解决您的问题!