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]