Skip to content

Instantly share code, notes, and snippets.

@cojoj
Created September 15, 2015 06:19

Revisions

  1. cojoj created this gist Sep 15, 2015.
    19 changes: 19 additions & 0 deletions defaults.swift
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,19 @@
    func readSample(sampleType: HKSampleType, predicate: NSPredicate?, limit: Int?, completion: ((results: [HKSample]?, error: ErrorType?) -> Void)!) {
    // Read stored anchor (If this is the first run 0 will be returned which is equal to HKAnchoredObjectQueryNoAnchor)
    let anchorValue = defaults.integerForKey(sampleType.identifier)
    let limit = limit ?? Int(HKObjectQueryNoLimit)

    let query = HKAnchoredObjectQuery(type: sampleType, predicate: predicate, anchor: anchorValue, limit: limit) { (query, results, newAnchor, error) -> Void in
    guard let results = results where error == nil else {
    completion(results: nil, error: error)
    return
    }

    // Here I'm 'dynamically' creating new keys
    self.defaults.setInteger(newAnchor, forKey: sampleType.identifier)

    completion(results: results, error: nil)
    }

    healthKitStore.executeQuery(query)
    }