我正在尝试将可选数组的计数作为字符串,或者如果数组为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).
这样做:
textLabel.text = array?.count.flatMap { String($0} }
Run Code Online (Sandbox Code Playgroud)
flatMap 在一个可选项上将返回nil(如果可选的是nil)或运行闭包并传递可选参数的结果.
编辑以从注释 -jrc中显示其他可能的答案
array.map { String($0.count) }- Kurt Revis(array?.count).map { String($0) }- 马丁- [R.| 归档时间: |
|
| 查看次数: |
694 次 |
| 最近记录: |