2015-12-22 42 views
0

我發現我需要在每個源的基礎上查詢HealthKit,以確保我正在接收給定類別中的用戶的所有數據。我無法找到文檔中的任何內容,解釋HKQueryAnchor對象如何處理查詢不同來源的問題。特別是,我是否需要爲每個數據類型的每個源保存一個錨,還是每個數據類型只需一個錨?或者只需要每個源的錨?HKQueryAnchor每個數據類型,每個源或每個數據源的每個數據類型?

同樣,我該如何比較相同數據類型的錨,但不同的數據源。有沒有有意義的比較?

我想堅持我的'書籤'爲每個數據類型和來源,所以我沒有收到Health Kit的重複。

回答

0

對於執行的每個不同查詢,應該保留單獨的錨點。如果謂詞或樣本類型不同,查詢就不同。例如,查詢「來自源A的步驟」和「來自源B的步驟」的查詢是不同的,因爲它們的謂詞不同。同樣,「源A燃燒的活性能量」和「源A的步驟」也不同,因爲它們的樣品類型不同,您需要爲每個樣品存儲單獨的錨。

有HealthKit源和錨之間沒有特殊的關係 - 謂語就是描述您的查詢,不管你的謂詞的過濾器按來源,日期,金額等

作爲一個側面說明是否:這聽起來像您正嘗試爲特定類型的每個樣本源執行單獨的錨定對象查詢。我認爲如果您對樣本類型的所有樣本執行單個查詢,然後根據其來源分別處理樣本(通過查看每個HKSamplesource屬性),會更簡單。那麼你只需要爲樣本類型保留一個錨點。

+0

我該怎麼做?我的理解是,如果我查詢特定的樣本類型,返回的數據將僅來自此數據類型的最高優先級源。這是我閱讀和我所看到的。例如,如果我查詢了騎行距離,如果我查詢了所有來源,則只會返回優先級最高的騎車數據源。這就是爲什麼我開始查詢各個來源......以獲取所有數據。 – helloB

+0

您所指的是HKStatisticsQuery如何處理來自不同來源的重疊樣本。當您使用HKSampleQuery或HKAnchoredObjectQuery時,您將獲得與謂詞匹配的所有樣本。你是否嘗試過執行沒有謂詞的查詢? – Allan

+0

如果我執行時沒有任何預測,我也會從我自己的應用程序的源獲得結果。我不希望這些重複值輸入我的數據流。我憑經驗知道,當我提交NSSet數據源時,只包括我自己的所有數據源,我只能從單一來源獲取數據,而不是從所有可用數據源獲取數據。 – helloB

相關問題