NSFastEnumeration in Swift 3

2.8k views Asked by At

I am trying to iterate over a object of CMSensorDataList class returned by CMSensorRecorder.accelerometerData(from:to:). This class confirms to NSFastEnumeration protocol. So I tried the trick mentioned in https://stackoverflow.com/a/25872991/5603109. However since I am using Xcode Version 8.0 beta (8S128d), it no longer works.

What can I do to make it support for-in loops?

1

There are 1 answers

0
Hamish On BEST ANSWER

In Swift 3, SequenceType has been renamed to Sequence (the "Type" suffix has been removed from protocols), generate() has been renamed to makeIterator() (the concept of a "Generator" has been replaced by an "Iterator") and therefore NSFastGenerator has also been renamed to NSFastEnumerationIterator.

Thus you'll want your extension to look like this:

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