UILabel上的Swift映射"匿名闭包参数未包含在闭包中#34;

时间:2017-04-10 14:41:09

标签: ios swift uilabel closures

addSubview()的{​​{1}}实例contentView进行三次单独调用可能会缩减为Swift UITableViewCell

map(_:)

但是,速记会抛出一个错误:"匿名闭包参数不包含在闭包中#34;。 [nameLabel, numberLabel, informationLabel].map(contentView.addSubview($0)) 会在这里最好吗?

2 个答案:

答案 0 :(得分:4)

此代码无效,因为它使用匿名闭包参数 $0,而不是在闭包中。

[nameLabel, numberLabel, informationLabel].map(contentView.addSubview($0))

有两种方法可以解决这个问题,或者把它放在一个闭包中:

[nameLabel, numberLabel, informationLabel].map{ contentView.addSubview($0) }

或者更好的是,只需直接使用实例方法:

[nameLabel, numberLabel, informationLabel].map(contentView.addSubview)

在任何一种情况下,您都应该使用forEach而不是map,因为您不关心Void的{​​{1}})返回值:< / p>

addSubview

答案 1 :(得分:2)

当closure返回void

时使用.forEach
 [nameLabel, numberLabel, informationLabel].forEach { contentView.addSubview($0) }