我想在Swift中找到带有“单”行表达式的第EKSource
一个类型EKSourceType.Local
。这是我目前拥有的:
let eventSourceForLocal =
eventStore.sources[eventStore.sources.map({ $0.sourceType })
.indexOf(EKSourceType.Local)!]
是否有更好的方法(例如不使用映射和/或使用的通用版本find
)?
有一个版本indexOf
带有谓词闭包-使用它来查找第一个本地源的索引(如果存在),然后在上使用该索引eventStore.sources
:
if let index = eventStore.sources.indexOf({ $0.sourceType == .Local }) {
let eventSourceForLocal = eventStore.sources[index]
}
或者,您可以find
通过以下扩展名添加通用方法SequenceType
:
extension SequenceType {
func find(@noescape predicate: (Self.Generator.Element) throws -> Bool) rethrows -> Self.Generator.Element? {
for element in self {
if try predicate(element) {
return element
}
}
return nil
}
}
let eventSourceForLocal = eventStore.sources.find({ $0.sourceType == .Local })
(为什么还不在那里?)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句