所以我的应用程序中的ViewController代码中存在一些错误和错误。首先,在我的行中:
let predicate = HKQuery.predicateForSamplesWithStartDate(startDate,endDate: endDate ,options: .None)
我收到以下错误:use of unresolved identifier 'endDate'
这很奇怪。是因为我没有把它们变成NSDate对象吗?我该怎么做呢?
至于我的第二个问题,这不是一个错误,我根本就不知道该怎么做。我将我的标签从故事板连接到我的视图控制器。我想把我收集的数据简单地打印到标签的屏幕上。我知道在大多数情况下如何做到这一点,但我失去了如何在我当前的配置中做到这一点。我不希望用户按下按钮或任何东西,我只是希望它默认自动显示...非常感谢任何帮助!!!
我在下面列出了所有代码:
import UIKit
import HealthKit
class ViewController: UIViewController {
@IBOutlet weak var displayData: UILabel!
override func viewDidLoad() {
super.viewDidLoad()
// create store
let healthStore = HKHealthStore()
// create an object type to request an authorization for a specific category, here is SleepAnalysis
if let sleepType = HKObjectType.categoryTypeForIdentifier(HKCategoryTypeIdentifierSleepAnalysis) {
let setType = Set<HKSampleType>(arrayLiteral: sleepType)
healthStore.requestAuthorizationToShareTypes(setType, readTypes: setType, completion: { (success, error) -> Void in
// here is your code
})
}
if let sleepType = HKObjectType.categoryTypeForIdentifier(HKCategoryTypeIdentifierSleepAnalysis) {
// we create a predicate to filter our data
let predicate = HKQuery.predicateForSamplesWithStartDate(startDate,endDate: endDate ,options: .None)
// I had a sortDescriptor to get the recent data first
let sortDescriptor = NSSortDescriptor(key: HKSampleSortIdentifierEndDate, ascending: false)
// we create our query with a block completion to execute
let query = HKSampleQuery(sampleType: sleepType, predicate: predicate, limit: 30, sortDescriptors: [sortDescriptor]) { (query, tmpResult, error) -> Void in
答案 0 :(得分:2)
endDate
未定义 - 您实际上并未创建表示endDate
的变量 - 因此编译器会告诉您。而且,startDate
也是未定义的,即使编译器还没有告诉你。至少,您需要创建NSDate
s。
let startDate = NSDate()
let endDate = NSDate()
更具体地说,您需要在要查询的范围内创建它们。
关于默认显示数据,只需在UILabel
中设置viewDidLoad
的文字即可。我假设您要设置此文本以响应HealthKit查询?如果是这样,您仍然可以在viewDidLoad
因此,要使用您的查询,需要在executeQuery
上向healthStore
提供此问题。这里有一些代码可以与您发布的内容一起使用:
healthStore.executeQuery(HKSampleQuery(
sampleType: sleepType,
predicate: predicate,
limit: 30,
sortDescriptors: [sortDescriptor],
resultsHandler: { (query: HKSampleQuery!, results: [AnyObject]!, err: NSError?) -> Void in
if err != nil {
// ERROR Occurred, handled it
println(err)
return
}
var labelText = ""
for result in results as [HKQuantitySample]! {
// SUCCESS, use results here
labelText += result
}
displayData.text = labelText
}
))