首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >HKSampleQuery for HKWorkout

HKSampleQuery for HKWorkout
EN

Stack Overflow用户
提问于 2014-10-06 02:30:04
回答 1查看 2K关注 0票数 2

我有一个问题要查询HKWorkout

下面是我用来保存HKWorkoutHKQuantitySample的代码。

代码语言:javascript
复制
func workout(#distance:Double, start: NSTimeInterval, paused:NSTimeInterval, resume:NSTimeInterval, end:NSTimeInterval, calory:Double) -> HKWorkout {

    var event1_     = HKWorkoutEvent(type: HKWorkoutEventType.Pause, date: self.minutesBeforeNow(paused))
    var event2_     = HKWorkoutEvent(type: HKWorkoutEventType.Resume, date: self.minutesBeforeNow(resume))
    var calories_   = HKQuantity(unit: HKUnit.calorieUnit(), doubleValue: calory)
    var distance_   = HKQuantity(unit: HKUnit.meterUnit(), doubleValue: distance)
    var meta_ = [
        "TITLE":"WORKOUT_TEST",
        "TEAM":"TEAM WAG",
        "ID":"\(arc4random()%999)"
    ]

    var workout_ = HKWorkout(
        activityType: HKWorkoutActivityType.Cycling,
        startDate: self.minutesBeforeNow(start),
        endDate: self.minutesBeforeNow(end),
        workoutEvents: [event1_, event2_],
        totalEnergyBurned: calories_,
        totalDistance: distance_,
        metadata: meta_)

    return workout_
}

func quantity(#distance:Double, start:NSTimeInterval, end:NSTimeInterval) -> HKQuantitySample {

    var meta_ = [
        "TITLE":"QUANTITY_SAMPLE_TEST",
        "ID":"\(arc4random()%99)"]
    var sample_ = HKQuantitySample(
        type: HKObjectType.quantityTypeForIdentifier(HKQuantityTypeIdentifierDistanceCycling),
        quantity: HKQuantity(unit: HKUnit.meterUnit(), doubleValue: distance),
        startDate: self.minutesBeforeNow(start),
        endDate: self.minutesBeforeNow(end),
        metadata:meta_)

    return sample_
}

func minutesBeforeNow(min:NSTimeInterval) -> NSDate {
    return NSDate().dateByAddingTimeInterval(-60 * min)
}

我用密码保存,工作很好。甚至我都可以使用HKSampleQuery进行查询,比如

代码语言:javascript
复制
var predicate_ = HKQuery.predicateForSamplesWithStartDate(self.minutesBeforeNow(120), endDate: self.minutesBeforeNow(10), options: HKQueryOptions.None)
var query_ = HKSampleQuery(sampleType: HKSampleType.quantityTypeForIdentifier(HKQuantityTypeIdentifierDistanceCycling),
        predicate: predicate_,
        limit: 10,
        sortDescriptors: nil) { (let sampleQuery, let samples, let error) -> Void in

            BKLog("")
            for sample in samples as [HKQuantitySample]
            {
                var meter_  = sample.quantity.doubleValueForUnit(HKUnit.meterUnit())
                var km_     = meter_ / 1000
                BKLog("\(sample.metadata?.description), \(km_))")
            }
    };

然而,当我试图查询HKWorkoutType时,我什么也得不到。

代码语言:javascript
复制
var query_ = HKSampleQuery(
        sampleType: HKSampleType.workoutType(),
        predicate: nil,
        limit: 10,
        sortDescriptors: nil) { (let query, let objects, let error) -> Void in

            BKLog("")  // 1

            if(error != nil)
            {
                BKLog("ERROR : \(error.localizedDescription)")  // 2
                return
            }
            else
            {
                BKLog("WORKOUST : \(objects.count)")  // 3
            }


            for workout in objects {
            }
        }

奇怪的是我没有完成块的日志。没有日志从1,2,3注释日志。

当我使用class func predicateForObjectsFromWorkout(workout: HKWorkout!) -> NSPredicate!时,它就像我预期的那样起作用了。

为什么我不能从HKWorkoutType()查询中得到任何信息?

BKLog只是一个已形成的日志函数。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-11-04 09:25:42

这似乎是在iOS8.1中修复的HealthKit错误。在8.1之前,我遇到了完全相同的问题,但在8.1中,相同的代码工作得很好。我使用以下方法检查使用8.1:

代码语言:javascript
复制
    NSOperatingSystemVersion iOSVersionInWhichHealthKitActuallyWorks;
    iOSVersionInWhichHealthKitActuallyWorks.majorVersion = 8;
    iOSVersionInWhichHealthKitActuallyWorks.minorVersion = 1;
    iOSVersionInWhichHealthKitActuallyWorks.patchVersion = 0;

    if (![[NSProcessInfo processInfo]isOperatingSystemAtLeastVersion:iOSVersionInWhichHealthKitActuallyWorks]) {
    }
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26209327

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档