Swift字符串不符合任何对象

时间:2014-10-16 11:43:31

标签: ios xcode swift

只是有点愚蠢的问题并且多次回答,但是我无法理解

    while let element = enumdirs?.nextObject() as? String {
        println(element)
    }

以上原因导致错误:Swift字符串不符合任何对象,因此使用as,但

    while let element = enumdirs?.nextObject() {
        println(element as? String)
    }

完美无缺。在声明

中投射的问题是什么

1 个答案:

答案 0 :(得分:4)

AnyObject可以表示任何类型的实例。来自的条件演员 AnyObjectString只有在String必要时桥接到NSString时才有效。

然而,这似乎不适用于

中的可选链接
while let element = enumdirs?.nextObject() as? String { ... }

所以这可能是编译器错误。如果您转换为NSString,它会按预期工作:

while let element : String = enumdirs?.nextObject() as? NSString { ... }

或明确展开:

while let element = enumdirs!.nextObject() as? String { ... }

但更好的解决方案可能是

if let enumdirs = NSFileManager.defaultManager().enumeratorAtPath(...) {
    while let element = enumdirs.nextObject() as? String {
        println(element)
    }
}

即。使用可选的绑定中使用它来打开枚举器 循环。