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

jrc*_*jrc 0 swift

我正在尝试将可选数组的计数作为字符串,或者如果数组为nil则为nil.

这有效:

let array: [AnyObject]? = ...

textLabel.text = (array != nil ? String((array?.count)!) : nil)
Run Code Online (Sandbox Code Playgroud)

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

编辑:我希望文本" 3"不是" Optional(3)",例如.

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

Cat*_*Man 5

这样做:

textLabel.text = array?.count.flatMap { String($0} }
Run Code Online (Sandbox Code Playgroud)

flatMap 在一个可选项上将返回nil(如果可选的是nil)或运行闭包并传递可选参数的结果.

编辑以从注释 -jrc中显示其他可能的答案