В классе QueryHK запускаю запрос HealthKit для шагов и соответствующей даты. Я хотел бы записать эти данные в NSArray и вернуть его, чтобы я мог вызвать функцию в ViewController.Возвращаемые значения из функции пустые: Почему?
- Вопрос: код из ViewController ничего не возвращает, и никакой ошибки. Почему возврат пуст?
Мне кажется, что запрос не «пишет в ответ».
QueryHK.swift:
import UIKit
import HealthKit
class QueryHK: NSObject {
var steps = Double()
var date = NSDate()
func performHKQuery() -> (steps: Double, date: NSDate){
let healthKitManager = HealthKitManager.sharedInstance
let stepsSample = HKQuantityType.quantityTypeForIdentifier(HKQuantityTypeIdentifierStepCount)
let stepsUnit = HKUnit.countUnit()
let sampleQuery = HKSampleQuery(
sampleType: stepsSample,
predicate: nil,
limit: 0,
sortDescriptors: nil)
{
(sampleQuery, samples, error) in
for sample in samples as [HKQuantitySample]
{
self.steps = sample.quantity.doubleValueForUnit(stepsUnit)
self.date = sample.startDate
println("Query HealthKit steps: \(self.steps)")
println("Query HealthKit date: \(self.date)")
}
}
healthKitManager.healthStore.executeQuery(sampleQuery)
return (steps, date)
}
}
ViewController.swift:
import UIKit
class ViewController: UIViewController {
var query = QueryHK()
override func viewDidLoad() {
super.viewDidLoad()
printStepsAndDate()
}
func printStepsAndDate() {
println(query.performHKQuery().date)
println(query.performHKQuery().steps)
}
}
Проверьте объект vc1 не равен нулю. Также лучше переместить эти общие методы в другой класс и создать свой объект в vc1 и vc2, в свою очередь, вызвать метод –
Когда я запускаю ViewController1, который печатает self.steps и self.dates, они не ноль. Согласитесь на разделение кода на классы. У меня просто есть привычка делать это таким образом, когда я пробую новые методы. – KML
Извините, что вы правы, они были пустыми, дата была просто инициализирована сегодняшней датой NSDate(). Так почему же возврат пуст? Очевидно, что запрос не «пишет в return», а возвращает возвращает только инициализированные значения. Как я могу вернуть данные из запроса? – KML