我有一个对象数组:
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 作为参数之一,因为它无法将提供的参数与为数组类型定义的重载相匹配。
