Swiftstring不符合anyobject
只是有点愚蠢的问题,多次回答,但我不明白
while let element = enumdirs?.nextObject() as? String { println(element) }
上面的原因错误:Swift的string不符合anyobject,所以用as,但是
while let element = enumdirs?.nextObject() { println(element as? String) }
完美的作品。 在声明中input什么问题
AnyObject
可以表示任何类types的实例。 从AnyObject
到String
条件AnyObject
只能工作,因为如果必要的话, 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 { ... }
但更好的解决scheme可能是
if let enumdirs = NSFileManager.defaultManager().enumeratorAtPath(...) { while let element = enumdirs.nextObject() as? String { println(element) } }
即在循环中使用它之前,使用可选的绑定打开枚举器。