Swift中的NSFastEnumeration

Sha*_*iel 14 objective-c ios swift

我试图将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;
Run Code Online (Sandbox Code Playgroud)

到目前为止,我试图找到如何做到这一点,但这似乎不起作用,这里是快速的代码:

var results: ZBarSymbolSet = infoDictionary?.objectForKey(ZBarReaderControllerResults) as ZBarSymbolSet

    var symbol : ZBarSymbol? = nil;

    for symbol in results
    {    //just grab first barcode
        break;
    }
Run Code Online (Sandbox Code Playgroud)

条件错误 - "ZBarSymbolSet"没有名为"Generator"的成员

我究竟做错了什么?

这是屏幕截图 在此输入图像描述

Joh*_*pia 22

经过一段时间围绕swift框架文件,我终于找到了这个很好的类NSFastGenerator.NSSet而朋友们似乎也在使用相同的东西Generator.

因为ZBarSymbolSet,这是你如何扩展它以支持for-in循环:

extension ZBarSymbolSet: SequenceType {
    public func generate() -> NSFastGenerator {
        return NSFastGenerator(self)
    }
}
Run Code Online (Sandbox Code Playgroud)

更新:看起来Swift 2.0的协议扩展为我们解决了这个问题!