Xcode 6 Beta 5如果声明不起作用

时间:2014-08-06 18:43:18

标签: ios swift xcode6

在Xcode 6 Beta 4中,我可以使用此行检查变量是否属于某种类型:

if advanceDetails.objectForKey(selectedSectionName) as? Dictionary<String, AnyObject>  {

现在,在Xcode 6 Beta 5中,我收到错误:

Type 'Dictionary<String, AnyObject>?' does not conform to protocol 'BooleanType.Protocol'

这样做的新方法是什么?

4 个答案:

答案 0 :(得分:2)

这是因为Optionals现在需要明确地与nil进行比较。但是,您应该使用is代替:

if advanceDetails.objectForKey(selectedSectionName) is Dictionary<String, AnyObject>  {

答案 1 :(得分:2)

使用is代替as?进行比较。另请注意,从Beta 5开始,如果您要检查nil,则需要明确使用if object == nilobject != nil,这是您正在查看的错误。

答案 2 :(得分:2)

你不能再这样检查nil了:

if myOptional {...

你需要明确地这样做:

if myOptional != nil {...

答案 3 :(得分:1)

发行说明说:

  

Optionals不再符合BooleanType(以前的LogicValue)协议,因此它们可能不再用于代替布尔表达式(它们必须与v!= nil明确比较)。这解决了Bool的混乱局面?和相关类型,使代码更清楚地表明预期的测试,并且与语言的其余部分更加一致。

     

请注意,ImplicitlyUnwrappedOptional仍包含一些BooleanType功能。这个   问题将在未来的测试版中解决。 (17110911)