2016-12-21 25 views
0

我不知道是否有人遇到了这个问题。我今天更新了我的Xcode到8.2.1。当我尝试在scrollView上放置几个按钮时,发现一个类型推断错误。核心代码如下所示:Xcode 8.2.1中的Swift 3类型推理错误,用swift样式语句

for i in 0 ..< 6 { 

     let titleButton = UIButton(frame: CGRect(x: CGFloat(i) * titleWidth, y: 0, width: titleWidth, height: titleHeight)) 


     sv.addSubview(titleButton) 
    } 

的代码没有问题放置在滚动视图(SV)6个按钮,但是当我试图设置为每个按钮一个标题使用通话:的初始化下setTitle(_ title: String?, for state: UIControlState)按钮,Xcode没有显示方法完成的提示。我发现原因是'titleButton'被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) 
    } 

并发现“框架”被推断为错误的类型,所以“titleButton”的类型推断失败从框架看起来。最后我发现从这个for语句开头的变量'i'被推断为错误类型,即原点。

我在过去的Xcode版本中没有找到类似的问题。如果我真的需要在for循环中的逻辑中使用'i',是否有人有想法解决推理错误?

回答

0

为了解决这个问题,我要指出的类型自己如下:

let titleButton : UIButton = UIButton(frame: frame) 

然后在此,该方法完成建议工作正常。希望Apple能快速修复类型推断错误...