読者です 読者をやめる 読者になる 読者になる

Swift,Objective-Cプログラミング ~ iOS ~

Objective-C,Swift,Apple Watchなどのプログラミング

【iOS HealthKit入門 #006】HealthKitからをデータ取得する

HealthKit Swift

はじめに

下記記事の続きです。 swift.swift-studying.com

前回記事ではHealthKitで体温データを保存するところまでやりました。
今回は保存したデータを取得する方法を調べてみました。

データ取得クエリ

HealthKitからをデータ取得する場合、
HKQueryクラスを使用してデータを取得します。

といっても実際にはHKQueryクラスのサブクラスを使用します。
サブクラスには下記のものがあります。

  • HKAnchoredObjectQuery
  • HKCorrelationQuery
  • HKObserverQuery
  • HKSampleQuery
  • HKSourceQuery
  • HKStatisticsQuery
  • HKStatisticsCollectionQuery

この中で一般的に良く使われる HKSampleQueryについて書きます。

HKSampleQuery

HKSampleQueryはHKSampleクラスのデータを取得するためのクラスです。

HKSampleクラスのデータとは 歩いた距離体温睡眠などです。

データ取得する場合、HKSampleQueryを初期化します。

init(sampleType sampleType: HKSampleType, predicate predicate: NSPredicate?, limit limit: Int, sortDescriptors sortDescriptors: [NSSortDescriptor]?, resultsHandler resultsHandler: (HKSampleQuery, [HKSample]?, NSError?) -> Void)
引数
  • sampleType:HKSampleType
    データの種類
  • predicate:NSPredicate?
    検索条件
  • limit:Int
    件数(0のときは全てのデータを取得します)
  • sortDescriptors:[NSSortDescriptor]?
    ソート条件(ソートする必要がないときはnilを指定します)
実行

HealthStoreクラスのexecuteQueryで実行します。
引数に用意したクエリを指定します。

let healthStore = HKHealthStore()
healthStore.executeQuery(query)

次にサンプルを書いておきます。


体温データ取得サンプル

// データの種類
let type = HKObjectType.quantityTypeForIdentifier(HKQuantityTypeIdentifierBodyTemperature)!
// 検索条件
let predicate:NSPredicate? = nil
// 取得件数
let limit = 0
// ソート条件
let sortDescriptors:[NSSortDescriptor]? = nil

// クエリ作成
let sampleQuery = HKSampleQuery(sampleType: type, predicate: predicate, limit: limit, sortDescriptors: sortDescriptors){
    (query, results, error) in
    
    // 実行後
    if error == nil{
        if let samples = results as? [HKQuantitySample]{
            dispatch_async(dispatch_get_main_queue()){
                print("\(samples.first)")
            }
        }
    }
}

// クエリ実行
let healthStore = HKHealthStore()
healthStore.executeQuery(sampleQuery)

実行結果

体温データがあれば、下記のようにコンソールに表示されます。 f:id:fjswkun:20150927163334p:plain

HealthKitデータへのアクセス許可がなければ、
エラーになるので気をつけてください。

おわりに

次は簡単なアプリを作りつつ、調べたことを書く。

参考情報

HealthKit

  • HealthKitについて書いてある書籍は今のところこれしか知らない

iOS 8 Swift Programming Cookbook: Solutions & Examples for iOS Apps

Swift

iOSアプリ開発未経験の人向け
iOSアプリ開発をはじめたとき最初に買った書籍 【アプリ作成未経験の人向け】
Storyboardを使って画面を作成していく。
手順にしたがって操作していくと、ボタンの作成やWebViewの作成などができる。
アプリって、こんな感じで作るんだというのを体験できる。

Swiftではじめる iPhoneアプリ開発の教科書 【iOS 8&Xcode 6対応】

Swiftではじめる iPhoneアプリ開発の教科書 【iOS 8&Xcode 6対応】


・わかりやすくていい、と聞いた本
立ち読みした感じだと【アプリ作成未経験の人向け】

絶対に挫折しない iPhoneアプリ開発「超」入門【Swift & iOS8.1以降 完全対応】

絶対に挫折しない iPhoneアプリ開発「超」入門【Swift & iOS8.1以降 完全対応】


②を終えたくらいの知識の方向け
・アプリ開発独学中に2冊めに購入した書籍
プログラミング知識はなくても、若干理解するのに時間がかかる程度で、
読み進められるわかりやすさがある。

iPhoneアプリ開発塾

iPhoneアプリ開発塾


③中級者、上級者向け

詳解 Swift

詳解 Swift