[swift-users] Regression in Xcode8-beta6 Swift?

Travis Griggs travisgriggs at gmail.com
Wed Aug 24 20:33:35 CDT 2016


Upgrading to beta6 of Xcode8, I’ve read through various SE’s and made fixes as appropriate, but the following behavior I didn’t catch an explanation as to why its now an error where it was fine before.

In a ViewController, I have something that looks like:

    var addButton = UIButton(type: .custom)
    var addPrompt = UILabel()
    var timesButton = UIButton(type: .system)
    var removeButton = UIButton(type: .system)
    var menuButton = UIButton(type: .system)
	
    func commonInit() {
        [self.addButton, self.addPrompt, self.timesButton, self.removeButton, self.menuButton].forEach { control in
            control.sizeToFit()
            self.addSubview(control)
    }

This code was fine until the latest update. It seemed to a heterogenous array of UILabel and UIButtons was a homogeneous array of UIView objects. But now I get the errors:

    Value of type ‘Any’ has no member ‘sizeToFit'
    Cannot covert value of type ‘Any’ to expected argument type of ‘UIView’

This seems like it might be related to SE-0116 (Import Objective-C id as Swift Any ) but I’m not sure why the inferencer can no longer find the shared parent type, where it could before.

Aside, I can fix it by simply helping it a little, e.g.

    [self.addButton, self.addPrompt, self.timesButton, self.removeButton, self.menuButton].forEach { (control:UIView) in...

But remain curious why the inferencer can’t handle this for me anymore.





More information about the swift-users mailing list