【问题标题】:NSFastEnumeration in Swift 3Swift 3 中的 NSFastEnumeration
【发布时间】:2016-06-15 08:25:52
【问题描述】:
我正在尝试遍历 CMSensorRecorder.accelerometerData(from:to:) 返回的 CMSensorDataList 类的对象。此类确认NSFastEnumeration 协议。所以我尝试了https://stackoverflow.com/a/25872991/5603109中提到的技巧。但是,由于我使用的是 Xcode 8.0 beta (8S128d),它不再有效。
我能做些什么让它支持for-in循环?
【问题讨论】:
标签:
ios
swift
nsfastenumeration
【解决方案1】:
在 Swift 3 中,SequenceType 已重命名为 Sequence(“类型”后缀已从协议中删除),generate() 已重命名为 makeIterator()(“生成器”的概念已被替换为“迭代器”),因此 NSFastGenerator 也已重命名为 NSFastEnumerationIterator。
因此你会希望你的扩展看起来像这样:
extension CMSensorDataList : Sequence {
public func makeIterator() -> NSFastEnumerationIterator {
return NSFastEnumerationIterator(self)
}
}