Swift 找不到'__转换';接受提供的参数,将多个元素添加到数组中

Swift 找不到'__转换';接受提供的参数,将多个元素添加到数组中,swift,Swift,我已经定义了以下变量: var mapHorizontalConstraints:Array = Array<NSLayoutConstraint>() 我得到“找不到接受所提供参数的“\uu conversion”的重载”,一个小箭头指向“=”在上面的赋值中登录 我相信这是因为我们无法使用“=”添加到数组中。如果我可以使用数组的append()函数添加多个元素,我会尝试这样做,但正如您所知append()只接受一个元素 所以我想知道这是否是我的问题,如果是,我如何在Swift中向

我已经定义了以下变量:

var mapHorizontalConstraints:Array = Array<NSLayoutConstraint>()
我得到“找不到接受所提供参数的“\uu conversion”的重载”,一个小箭头指向
“=”
在上面的赋值中登录

我相信这是因为我们无法使用
“=”
添加到数组中。如果我可以使用数组的
append()
函数添加多个元素,我会尝试这样做,但正如您所知
append()
只接受一个元素


所以我想知道这是否是我的问题,如果是,我如何在Swift中向数组添加多个元素?

您不能将变量设置为type
array
,您需要显式写出类型,如下所示:

var-mapHorizontalConstraints:Array=…

或者更简单地说

var-mapHorizontalConstraints:[NSLayoutConstraint]=…

如注释中所述,
NSLayoutConstraint.constraintsWithVisualFormat
返回
[AnyObject]

因此,当您分配它时,您应该如下所示:

 mapHorizontalConstraints =  NSLayoutConstraint.constraintsWithVisualFormat("|-0-[mapView]-0-|",
        options: 0,
        metrics: nil,
        views: ["mapView":mapView]) as [NSLayoutConstraint]
您可以使用
+=
操作符附加到它。

试试这个

    var mapHorizontalConstraints:AnyObject[] = []
要设置,请使用“=”运算符,将“+=”添加到数组中,如中所示

mapHorizontalConstraints += [obj1, obj2, obj3]
实际上,您可以使用+=运算符将多个元素添加到数组中,例如

array += [4,5,6]
(示例取自Swift标准库参考


但有一个不同的问题:你得到的NSArray*在swift中作为
AnyObject[]
,然后需要向下转换才能使用。请参阅Apple的使用Swift with Cocoa和Objective-C文档中有关Cocoa数据类型的部分。

我注意到
NSLayoutConstraint.constraintsWithVisualFormat
返回
AnyObject[]
。Swift是否需要对
数组进行强制转换?@帕尔帕蒂姆检查编辑:,这绝对是推荐的方法way@Palpatim您还可以通过对任何类型为
NSLayoutConstraint
NSLayoutConstraint[]
对此稍作修改,我将其标记为答案,正如@帕尔帕蒂姆所说,NSLayoutConstraint.constraintsWithVisualFormat返回任何对象[]!
array += [4,5,6]