NSFastEnumeration в Свифт 3

Я пытаюсь перебрать объект CMSensorDataList класс, возвращенный CMSensorRecorder.accelerometerData(from:to:), Этот класс подтверждает NSFastEnumeration протокол. Поэтому я попробовал трюк, упомянутый в /questions/6327197/nsfastenumeration-v-swift/6327203#6327203. Однако, поскольку я использую бета-версию Xcode версии 8.0 (8S128d), она больше не работает.

Что я могу сделать, чтобы это поддержало for-in петли?

1 ответ

Решение

В Свифте 3 SequenceType был переименован в Sequence (суффикс "Тип" был удален из протоколов), generate() был переименован в makeIterator() (понятие "Генератор" было заменено "Итератором") и, следовательно, NSFastGenerator также был переименован в NSFastEnumerationIterator,

Таким образом, вы хотите, чтобы ваше расширение выглядело так:

extension CMSensorDataList : Sequence {
    public func makeIterator() -> NSFastEnumerationIterator {
        return NSFastEnumerationIterator(self)
    }
}
Другие вопросы по тегам