在Swift中为NSDateComponenstFormatter设置多个allowedUnits

teb*_*200 1 ios swift nsdatecomponentsformatter

背景:

使用NSDateComponentsFormatter格式化NSTimeInterval时,使用该allowedUnits属性将结果字符串舍入到相关的时间单位通常很方便.

例如,我可能没有兴趣花时间到第二个,所以设置allowedUnits为分钟得到一个适当舍入的输出字符串:

let duration: NSTimeInterval = 3665.0    // 1 hour, 1 minute and 5 seconds
let durationFormatter = NSDateComponentsFormatter()

durationFormatter.unitsStyle = .Full
durationFormatter.zeroFormattingBehavior = .DropAll
durationFormatter.allowedUnits = .Minute

let formattedDuration = durationFormatter.stringFromTimeInterval(duration)
Run Code Online (Sandbox Code Playgroud)

formattedDuration 将是"61分钟".

问题:

你会如何去设置allowedUnits,以.Hour.Minute这样格式化的持续时间将是"1小时1分钟"呢?

NSDateComponentFormatter类参考并没有真正涵盖如何做到这一点.

teb*_*200 8

正如Leo所建议的那样,你可以简单地提供allowedUnits一个像这样的数组:

durationFormatter.allowedUnits = [.Hour, .Minute]
Run Code Online (Sandbox Code Playgroud)