Swift 3 中的 NSFastEnumeration

NSFastEnumeration in Swift 3

我正在尝试迭代 CMSensorRecorder.accelerometerData(from:to:) 返回的 CMSensorDataList class 的对象。此 class 确认 NSFastEnumeration 协议。所以我尝试了中提到的技巧。但是,由于我使用的是 Xcode 8.0 版测试版 (8S128d),它不再有效。

我该怎么做才能让它支持 for-in 循环?

在Swift3中,SequenceType已重命名为Sequence("Type"后缀已从协议中删除),generate()已重命名到 makeIterator()("Generator" 的概念已被 "Iterator" 取代)因此 NSFastGenerator 也已重命名为 NSFastEnumerationIterator.

因此您希望您的扩展程序看起来像这样:

extension CMSensorDataList : Sequence {
    public func makeIterator() -> NSFastEnumerationIterator {
        return NSFastEnumerationIterator(self)
    }
}