将可选数组的计数作为字符串或nil

时间:2015-10-18 21:37:08

标签: swift

我试图将可选数组的计数作为字符串,如果数组为零,则为nil。

这有效:

let array: [AnyObject]? = ...

textLabel.text = (array != nil ? String((array?.count)!) : nil)

但它看起来很荒谬。有没有更好的方法来写这个(仍然作为一个单行)?

修改:我希望文字为" 3"不是" Optional(3)",例如。

在目标C中,这可能是(array ? [@(array.count) stringValue] : nil)

1 个答案:

答案 0 :(得分:5)

这样做:

textLabel.text = array?.count.flatMap { String($0} }
可选的

flatMap将返回nil(如果可选的是nil)或运行闭包并传递可选作为参数的结果。

编辑以显示评论中的其他可能答案 -jrc

  • array.map { String($0.count) } - Kurt Revis
  • (array?.count).map { String($0) } - Martin R