在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'
这样做的新方法是什么?
答案 0 :(得分:2)
这是因为Optionals现在需要明确地与nil
进行比较。但是,您应该使用is
代替:
if advanceDetails.objectForKey(selectedSectionName) is Dictionary<String, AnyObject> {
答案 1 :(得分:2)
使用is
代替as?
进行比较。另请注意,从Beta 5开始,如果您要检查nil
,则需要明确使用if object == nil
或object != nil
,这是您正在查看的错误。
答案 2 :(得分:2)
你不能再这样检查nil了:
if myOptional {...
你需要明确地这样做:
if myOptional != nil {...
答案 3 :(得分:1)
发行说明说:
Optionals不再符合BooleanType(以前的
LogicValue
)协议,因此它们可能不再用于代替布尔表达式(它们必须与v!= nil明确比较)。这解决了Bool的混乱局面?和相关类型,使代码更清楚地表明预期的测试,并且与语言的其余部分更加一致。请注意,ImplicitlyUnwrappedOptional仍包含一些BooleanType功能。这个 问题将在未来的测试版中解决。 (17110911)