我不知道是否有其他人遇到过这个问题。我今天将Xcode更新为8.2.1。当我尝试在scrollView上放置几个按钮时,我发现了类型推断错误。核心代码如下所示:
for i in 0 ..< 6 {
let titleButton = UIButton(frame: CGRect(x: CGFloat(i) * titleWidth, y: 0, width: titleWidth, height: titleHeight))
sv.addSubview(titleButton)
}
代码在scrollView(sv)上放置6个按钮没有问题,但是当我尝试为每个按钮设置标题时使用调用:setTitle(_ title: String?, for state: UIControlState)
在按钮初始化下,Xcode没有显示方法完成建议。我发现原因是&#39; titleButton&#39;由Xcode推断为错误类型。
然后我尝试了:
for i in 0 ..< 6 {
let frame = CGRect(x: CGFloat(i) * titleWidth, y: 0, width: titleWidth, height: titleHeight)
let titleButton = UIButton(frame: frame)
sv.addSubview(titleButton)
}
找到&#39; frame&#39;被推断为错误类型,因此&#39; titleButton&#39;的类型推断失败似乎从框架。最后我发现变量&#39; i&#39;从这个for语句的开头推断为错误类型,即原点。
我在过去的Xcode版本中没有发现类似的问题。如果我真的需要使用&#39; i&#39;在for循环中的逻辑中,是否有人有想法解决推理错误?
答案 0 :(得分:0)
要解决这个问题,我必须自己指明类型:
let titleButton : UIButton = UIButton(frame: frame)
然后在此下,方法完成建议正常。希望Apple可以快速修复类型推断错误...