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

Martin R martinr448 at gmail.com
Thu Aug 25 02:51:05 CDT 2016


Did that change recently? In Xcode 8 beta 6

    let a: AnyObject = UIView()
    a.hasPrefix("test")

still compiles (but of course crashes at runtime). 

Martin

> Am 25.08.2016 um 09:23 schrieb David Hart via swift-users <swift-users at swift.org>:
> 
> You can’t call arbitrary functions on AnyObject anymore. Previously, you could do this:
> 
> let a: AnyObject = UIView()
> a.hasPrefix(“test”) // This compiled (because hasPrefix(:_) exists on NSString), but would obviously crash
> 
> This is not allowed anymore.
> 
>> On 25 Aug 2016, at 03:33, Travis Griggs via swift-users <swift-users at swift.org> wrote:
>> 
>> 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.
>> 
>> 
>> 
>> _______________________________________________
>> swift-users mailing list
>> swift-users at swift.org
>> https://lists.swift.org/mailman/listinfo/swift-users
> 
> _______________________________________________
> swift-users mailing list
> swift-users at swift.org
> https://lists.swift.org/mailman/listinfo/swift-users



More information about the swift-users mailing list