为什么我需要在感叹号中包裹这一行?迅捷3

时间:2017-06-24 21:30:12

标签: swift optional

if (tweet?.media.count)! < 0

Tweet是一类可选的推文

媒体类型为[mediaitem]

count的类型为Int

那为什么我需要感叹号呢?

1 个答案:

答案 0 :(得分:1)

由于tweet是可选的,因此其值可能为nil。使用可选链接(?.tweet之间的media运算符)意味着表达式的其余部分也可能是nil - 毕竟,不可能得到非{ - 来自nil推文的nil一系列媒体项目。

在表达式结束时,你会留下一个可选的Int,它与0不能直接比较。这就是为什么编译器会建议你使用!运算符强制解包计数。

我个人认为有一种更好的方法 - 您可以预先tweet nil来预测if let tweet = tweet, tweet.media.count < 0 { // … } ,而不是强行解包。

if let

如果tweet不是nil,则只使用条件"RollSize": "[17.5,18.0,19.0,23.5,26.5,35.0,35.5,38.0]" 。然后,在下面的表达式中,您可以使用展开的非可选推文进行剩余的计算。