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)
}
}