Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift中的可选数组_Swift - Fatal编程技术网

Swift中的可选数组

Swift中的可选数组,swift,Swift,下面最后一行代码给出了此错误: **Binary operator '+=' cannot be applied to operands of type '[AnyObject]' and '[(AnyObject)]'** var newsArray: [AnyObject]? if let _newsArray = newsArray { var mutableNewsArray = [AnyObject]() _newsArray += mutableNewsArra

下面最后一行代码给出了此错误:

**Binary operator '+=' cannot be applied to operands of type '[AnyObject]' and '[(AnyObject)]'**


var newsArray: [AnyObject]?

if let _newsArray = newsArray {
    var mutableNewsArray = [AnyObject]()
    _newsArray += mutableNewsArray
}

我不明白为什么会这样newsArrayMUTABLENSWARRAY属于同一类型,而且newsArray似乎已正确展开。

由于您使用“let”展开新闻数组,因此它是不可变的。您不能附加到它


编辑:没有看到Dániel Nagy的答案,这是正确的

不,他们没有相同的类型:newsArray是隐式WrappedOptional,而可变NewArray是[AnyObject],为了向newsArray添加元素,你必须将其展开。是的,你将其展开,但创建了一个常量,因此您不能附加到它。使用以下内容会更容易:newsArray?.append(mutableNewsArray)而不是if-let表达式。@DánielNagy正确地指出了这一点。看起来是一个有效的答案(let导致了此错误),需要注意的是,这将复制可选项中的任何内容,并且如果,您所做的更改将被丢弃在
之外。与
newsArray?.extend(otherArray)
不同,它将在适当的位置对其进行更改。