gpt4 book ai didi

ios - 将 HKWorkout 向下转换为我的自定义类

转载 作者:行者123 更新时间:2023-11-28 09:40:52 24 4
gpt4 key购买 nike

使用 Swift 4.0,我试图在内置的 HealhKit 类 HKWorkout 和我自己的自定义类之间进行向下转换。我的类(class)继承自 HKWorkout。 HKWorkout 继承自 HKSample。从 HKSample 作品向下转换到 HKWorkout。那么为什么我不能进一步将它转换到我自己的类(class)呢?如果可能的话,我想在不显式循环样本数组的情况下执行转换。我的自定义类的原因是存储 addl 属性和方法。

//This works. Note I am not explicitly looping over samples array.
//samples is an array of HKSample objects.
let workouts:[HKWorkout] = samples as! [HKWorkout]

//Does not work. FRWorkout is my class, inherits from HKWorkout.
let workouts:[FRWorkout] = samples as! [FRWorkout]

最终目标是获取一组 FRWorkout 对象而不是 HHWorkout 对象。

以下是完整的上下文:

class FRWorkout: HKWorkout {
var customProperty:UInt = 0

}

let sortDescriptor = NSSortDescriptor(key: HKSampleSortIdentifierEndDate,
ascending: false)

let query = HKSampleQuery(sampleType: HKObjectType.workoutType(),
predicate: nil,
limit: 50,
sortDescriptors: [sortDescriptor]) { (query, samples, error) in

//Here I want FRWorkout objects instead of HKWorkout. I need to add addl info to the HKWorkout. How can this be achieved?
guard let workouts = samples as? [HKWorkout], error == nil else {
completion(nil, error)
return
}

}

最佳答案

根据文档,不建议子类化,因此在进一步研究之前探索替代方案可能是个好主意。 From the docs :

Like many HealthKit classes, the HKWorkout class should not be subclassed. You may extend workouts by adding metadata with custom keys as appropriate for your app. For more information, see the methods init(activityType:start:end:duration:totalEnergyBurned:totalDistance:metadata:) and init(activityType:start:end:workoutEvents:totalEnergyBurned:totalDistance:metadata:).

关于ios - 将 HKWorkout 向下转换为我的自定义类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48196320/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com