在 ViewController 中向标签添加文本
startDate, endDate, and adding text to label in ViewController
所以我的应用程序 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
endDate
是未定义的——你实际上没有创建一个代表 endDate
的变量——因此编译器告诉你。而且,startDate
也是未定义的,即使编译器还没有告诉你。至少,您需要创建 NSDate
s.
let startDate = NSDate()
let endDate = NSDate()
更具体地说,您需要在要查询的范围内创建它们。
关于默认显示数据,只需在viewDidLoad
中设置UILabel
的文本即可。我假设您想设置此文本以响应 HealthKit 查询?如果是这样,您仍然可以在 viewDidLoad
中执行此操作
因此,要使用您的查询,需要在 healthStore
将其提供给 executeQuery
以下是您可以与您发布的内容一起使用的一些代码:
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
}
))
所以我的应用程序 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
endDate
是未定义的——你实际上没有创建一个代表 endDate
的变量——因此编译器告诉你。而且,startDate
也是未定义的,即使编译器还没有告诉你。至少,您需要创建 NSDate
s.
let startDate = NSDate()
let endDate = NSDate()
更具体地说,您需要在要查询的范围内创建它们。
关于默认显示数据,只需在viewDidLoad
中设置UILabel
的文本即可。我假设您想设置此文本以响应 HealthKit 查询?如果是这样,您仍然可以在 viewDidLoad
因此,要使用您的查询,需要在 healthStore
将其提供给 executeQuery
以下是您可以与您发布的内容一起使用的一些代码:
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
}
))