我正在尝试将Objective-C项目转换为
swift,但是我无法找到如何对符合NSFastEnumeration的类的对象使用NSFastEnumeration.
以下是ObjC中的代码:
// get the decode results id<NSFastEnumeration> results = [info objectForKey: ZBarReaderControllerResults]; ZBarSymbol *symbol = nil; for(symbol in results) // just grab the first barcode break;
到目前为止,我试图找到如何做到这一点,但是这不行,这里是swift代码:
var results: ZBarSymbolSet = infoDictionary?.objectForKey(ZBarReaderControllerResults) as ZBarSymbolSet var symbol : ZBarSymbol? = nil; for symbol in results { //just grab first barcode break; }
错误进入条件 – “ZBarSymbolSet”没有名为“Generator”的成员
我究竟做错了什么?
这是屏幕截图
解决方法
在一段时间之后,swift框架文件,我终于找到这个漂亮的类叫NSFastGenerator. NSSet和朋友似乎使用相同的Generator.
对于ZBarSymbolSet,以下是如何将其扩展为支持for-in循环:
extension ZBarSymbolSet: SequenceType { public func generate() -> NSFastGenerator { return NSFastGenerator(self) } }
更新:看起来像Swift 2.0的协议扩展修复了我们!