2017-06-02 249 views
0

我必须将通常包含整数的字符串转换为Bool类型的值。该规则将获得true或任何非零值。但无效号码将导致falseSwift 3:将数字字符串转换为Bool,对于无效值获取false

如果字符串总是有效号码,代码会是这样:

let stringValue = "1" 
let boolValue = Int(stringValue) != 0 

然而,这并不工作,如果stringValue是空的,因为那时Int()函数返回nil,那就是不平等为0,因此当我想要false时结果为true

什么是优雅在Swift 3中解决这个问题的方法?我喜欢避免使用if子句的多余行。

注意:如果字符串只能包含“1”的true值,则测试== 1将是答案。但是我也想允许true的其他非零值。换句话说,我喜欢有0以外的任何有效数字变成true

回答

3

因此,您可以使用Nil-Coalescing Operator

let boolValue = (Int(stringValue) ?? 0) != 0 
+1

啊,哇。我不知道那个操作员。我真的应该付出努力,阅读整个Swift 3规范,而不是通过这样做来学习:)(尽管如此,还有很多事情要做,只有很短的时间!) –

相关问题