に実行されることはありません私は私が当惑していますレイWenderlich(https://www.raywenderlich.com/89733/healthkit-tutorial-with-swift-workouts)からダウンロードし、スウィフト3.0機能readRunningWorkOutsはスウィフト3
にソースを変換HKTutorialアウトしようとしていますWorkoutsTableViewControllerのviewWillAppearでコードの動作。
変換後viewWillAppearのマイバージョン:クラスHKManagerで
open override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
print("View will appear")
healthManager?.readRunningWorkOuts({ (results, error) -> Void in
if(error != nil)
{
print("Error reading workouts: \(error?.localizedDescription)")
return;
}
else
{
print("Workouts read successfully!")
}
print("Really")
//Kkeep workouts and refresh tableview in main thread
self.workouts = results as! [HKWorkout]
DispatchQueue.main.async(execute: {() -> Void in
self.tableView.reloadData()
});
})
print("viewWillAppear ends")
}
open override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
print(workouts.count)
return workouts.count
}
及びFUNC readRunningWorkouts:
func readRunningWorkOuts(_ completion: (([AnyObject]?, NSError?) -> Void)!) {
print("readRunningWorkOuts")
// 1. Predicate to read only running workouts
let predicate = HKQuery.predicateForWorkouts(with: HKWorkoutActivityType.running)
// 2. Order the workouts by date
let sortDescriptor = NSSortDescriptor(key:HKSampleSortIdentifierStartDate, ascending: false)
// 3. Create the query
let sampleQuery = HKSampleQuery(sampleType: HKWorkoutType.workoutType(), predicate: predicate, limit: 0, sortDescriptors: [sortDescriptor])
{ (sampleQuery, results, error) -> Void in
if let queryError = error {
print("There was an error while reading the samples: \(queryError.localizedDescription)")
}
completion!(results,error as NSError?)
}
// 4. Execute the query
healthKitStore.execute(sampleQuery)
}
出力示す:
View will appear
viewWillAppear ends
0
0
0
0
0
workouts.countの値in func numberOfRowsは、レコードが読み込まれていないことを示します。
認証が行われ、健康アプリで多くのデータが実行されています。
明らかに、print( "View"が表示される)とprint( "viewWillAppear ends")の間のステートメントは決して実行されません。
私は何が欠けていますか?コードは正しいですか?教えてください。ありがとうございました。
プロジェクトファイルがhttps://dl.dropboxusercontent.com/u/2400869/HKTutorialFinalCode.zip
@ TusharSharmaしました。この関数は決して呼び出されません。それが呼び出された場合、最初のprint文が実行されます。 –
@TusharSharma var healthManager:HealthManager? –
@TusharSharma Xcodeプロジェクトファイルをダウンロードするリンクを追加しました。 –