我正在尝试将一个Objective-C项目转换为Swift,但是我无法找到如何使用NSFastEnumeration来处理符合NSFastEnumeration协议的类的对象。
以下是Objective-C中的代码:
// 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" 的成员。
我做错了什么?
这是屏幕截图
NSFastEnumeration
是在NSFoundation
中广泛使用的协议(NSSet
,NSHashTable
,NSMapTable
,NSPointerArray
等),如果要符合SequenceType
,则扩展所有这些类似乎是多余的,因为Objective-C已经支持了相同的for-in
结构。 - John Estropia