我是编程新手,并且正在尝试学习Swift和Xcode并借助于本书#34; Swift for Beginners:Develop and Design"。到目前为止,本书一直很有用,而且我已经学到了很多东西,但是,自从这本书出版以来,Swift和Xcode似乎已经更新了,这导致了一些变化。
我目前正在尝试编写第9章中的示例内存游戏,但我遇到了问题。到目前为止,由Swift I的更新版本引起的任何差异都能够自己解决,但是这一点让我很难过。
导致错误的代码是:
UIView.animateWithDuration(highlightTime,
delay: 0.0,
options: [.CurveLinear, .AllowUserInteraction, .BeginFromCurrentState],
animations: {
button.backgroundColor = highlightColor
}, completion: { finished in
button.backgroundColor = originalColor
var newIndex : Int = index + 1
self.playSequence(newIndex, highlightTime: highlightTime)
})
错误信息是:
无法调用“animateWithDuration”&#39;使用类型&#39;的参数列表(Double,delay:Double,options:UIViewAnimationOptions,UIViewAnimationOptions,UIViewAnimationOptions,animations :() - &gt;(),completion:(_) - &gt; _)&#39; < / p>
建议如下:
预期类型&#39;的参数列表(NSTimeInterval,delay:NSTimeInterval,options:UIViewAnimationOptions,animations :() - &gt; Void,completion:((Bool) - &gt; Void)?)&#39;
任何帮助或见解都将不胜感激。
答案 0 :(得分:3)
Swift对于强制转换是挑剔的,所以将数字包装在NSTimeInterval
中UIView.animateWithDuration(NSTimeInterval(highlightTime),
delay: NSTimeInterval(0.0),
options: [.CurveLinear, .AllowUserInteraction, .BeginFromCurrentState],
animations: {
button.backgroundColor = highlightColor
}, completion: { finished in
button.backgroundColor = originalColor
var newIndex : Int = index + 1
self.playSequence(newIndex, highlightTime: highlightTime)
})
答案 1 :(得分:0)
看起来你的highlightTime被定义为其他类型而不是Double,在定义变量时,只需将其类型定义为,
let highlightTime: Double = 1.0
而且,应该解决它。
答案 2 :(得分:0)
感谢大家的反馈。
过了一段时间,我才弄清楚了。
我之前已将highlightTime变量声明为“highlightTime:Double”,未指定任何值。我将其更改为“highlightTime:NSTimeInterval”,它现在正在运行。