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)
}
}
我正在尝试迭代 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)
}
}