if (tweet?.media.count)! < 0
Tweet是一类可选的推文
媒体类型为[mediaitem]
count的类型为Int
那为什么我需要感叹号呢?
答案 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]"
。然后,在下面的表达式中,您可以使用展开的非可选推文进行剩余的计算。