我有一个对象数组:
var fooArray = [Foo]()
如果我想用 Foo 对象附加另一个数组,我可以使用 +=
:
fooArray += anotherFooArray
这个有效。
但是如果我将数组中的 Foo 对象设为可选:
var fooArray = [Foo?]()
进行串联会引发错误:
[Foo?]() is not identical to 'CGFloat'
我绝对不明白这是什么问题,以及 CGFloat 类型与此有什么关系?
最佳答案
问题是 Foo
和 Foo?
有 2 种不同的类型(可选的实际上是 Optional<T>
枚举的一个实例)。
为了追加到数组中,元素必须是同一类型 - Foo
和 Optional<Foo>
不是。
您可以通过简单地将数组转换为附加到可选的数组 Foo
来解决这个问题。小号:
fooArray += anotherFooArray as [Foo?]
至于误导性的错误消息,我认为它正在尝试应用 +=
的重载。运算符将 CGFloat 作为参数之一,因为它无法将提供的参数与为数组类型定义的重载相匹配。
关于arrays - 使用 “+=” 运算符将一个数组连接到另一个可选值数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27967682/