可能的Swift 3编译器错误:连接[UIButton]的数组!

时间:2016-10-07 15:24:01

标签: uibutton swift3

我想我刚刚在swift编译器中找到了最奇怪的错误

如果你尝试连接两个隐式解包的按钮数组,工作正常,但是一旦你尝试连接相同类型的第三个数组,它就会显示binary operator '+' cannot be applied to types [UIButton] and [UIButton]!,即使前两个数组是隐式解包的...

如......

@IBOutlet var buttons1: [UIButton]!
@IBOutlet var buttons2: [UIButton]!
@IBOutlet var buttons3: [UIButton]!

var allButtons = button1 + button2 //this works
var allButtons = buttons1 + buttons2 + buttons3 //this doesn't…

也在游乐场重复了这个。

编辑:

看起来问题的一部分是button1 + button2的串联产生了[UIButton]而不是[UIButton]!,即使我强行解开连接如下:

var allButtons = button1! + button2!

此外,即使我强制变量的类型,它仍然不起作用:

var allButtons: [UIButton]! = button1 + button2 + button3

这只是我公然遗失的东西,还是这个真正的错误?

编辑2

我找到了两个解决方法。它们都有意义,因为前两个数组的连接产生了结果,但我仍然觉得奇怪的是编译器不会推断给定语句的所有三个类型。这是预期的行为......?

var anotherAllButtons = button1 + button2 + (button3 as [UIButton])
var allButtons = (button1 + button2) as [UIButton]! + button3

有趣的是,从[UIButton]到[UIButton]的演员!永远不会失败,这让我怀疑编译器会正确推断出类型。

0 个答案:

没有答案