我试图将可选数组的计数作为字符串,如果数组为零,则为nil。
这有效:
let array: [AnyObject]? = ...
textLabel.text = (array != nil ? String((array?.count)!) : nil)
但它看起来很荒谬。有没有更好的方法来写这个(仍然作为一个单行)?
修改:我希望文字为" 3
"不是" Optional(3)
",例如。
在目标C中,这可能是(array ? [@(array.count) stringValue] : nil)
。
答案 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。