Skip to content

Instantly share code, notes, and snippets.

@danielctull
Created June 1, 2015 13:36
Show Gist options
  • Save danielctull/3d6fc0ac12015c6508d4 to your computer and use it in GitHub Desktop.
Save danielctull/3d6fc0ac12015c6508d4 to your computer and use it in GitHub Desktop.
import HealthKit
public extension HKWorkout {
public func predicateForSamplesDuringActivePeriods() -> NSPredicate {
let subpredicates = activePeriods.map { start, end -> NSPredicate in
HKQuery.predicateForSamplesWithStartDate(start, endDate: end, options: .StrictStartDate | .StrictEndDate)
}
return NSCompoundPredicate(type: .OrPredicateType, subpredicates: subpredicates)
}
public var activePeriods: [(start: NSDate, end: NSDate)] {
get {
var activePeriods: [(start: NSDate, end: NSDate)] = []
var start: NSDate? = self.startDate
func addActivePeriod(start: NSDate?, end: NSDate) {
if let start = start {
activePeriods.append((start: start, end: end))
}
}
if let events = self.workoutEvents as? [HKWorkoutEvent] {
for event in events {
switch event.type {
case .Pause:
addActivePeriod(start, event.date)
start = nil
case .Resume:
start = event.date
}
}
}
addActivePeriod(start, self.endDate)
return activePeriods
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment