使用Swift 3,我在此声明中有一个硬编码值:
var lastDisplayLinkTimeStamp: CFTimeInterval!
if self.lastDisplayLinkTimeStamp >= 30
{
totalTimes += 1
}
但是现在我已经设置了一个段控件,让用户选择30.0,45.0或60.0作为值而不是硬编码值。
我知道我可以使用以下方法获取所选片段的标题文本:
durationSegment.titleForSegment(at: durationSegment.selectedSegmentIndex
我认为会产生一个字符串? (可选字符串)
但是如何将if语句中要接受的文本的durationSegment.titleForSegment转换为CFTimeInterval,或者我认为Double也被接受?
我使用CFTimeInterval或Double或Float强制转换
尝试了几种变体 if self.lastDisplayLinkTimeStamp >= Double(durationSegment.titleForSegment(at: durationSegment.selectedSegmentIndex)
{
totalTimes += 1
}
但仍然会收到如下错误:
二元运算符'> ='不能应用于类型的操作数 'CFTimeInterval!'和'双倍?'
答案 0 :(得分:0)
不要使用细分的标题。标题仅供显示,不应代表您的数据。
一种解决方案是创建一个时间间隔数组:
let possibleTimeIntervals: [CFTimeInterval] = [ 30.0, 45.0, 60.0 ]
然后根据选定的细分获取值:
let selectedSegment = durationSegment.selectedSegmentIndex
if selectedSegment != UISegmentedControlNoSegment {
let timeInterval = possibleTimeIntervals[selectedSegment]
if self.lastDisplayLinkTimeStamp >= timeInterval {
totalTimes += 1
}
}
BTW - 您甚至可以使用possibleTimeIntervals
数组使用数字格式化程序创建细分。