2017-12-10 25 views
0

私はあなたのHKActivitySummaryを使用するアプリを作っています。私が気づいたことの一つは、午前中に何か活動をする前にnilの値がHKQuery.predicateForActivitySummary()から戻ってくることです。朝のHKActivitySummaryはゼロです。

ひとたびアクティブなカロリーが1つ増えると、期待通りにゼロ以外の値が戻ってくるようになります。 HKQueryでこの問題を回避する方法が

let calendar = Calendar(identifier: .gregorian) 
let components = Set<Calendar.Component>([.day, .month, .year, .era]) 
var dateComponents = calendar.dateComponents(components, from: Date()) 
dateComponents.calendar = calendar 
let todayPredicate = HKQuery.predicateForActivitySummary(with: dateComponents) 
let query = HKActivitySummaryQuery(predicate: todayPredicate) { query, summaries, error in 
    // If I haven't moved yet today, summaries is an empty array, 
    // and the error is nil. 
    // However, if I've moved a bit, summaries is non-empty! 
    // Is there a way to adjust this query to avoid the nil-in-the-morning issue? 
} 
store.execute(query) 

あり:ここで

は、クエリですか?

更新日:私はAppleにレーダーを提出しました。それを複製したい場合、番号は36026782です。

+0

関連するスニペットを含めてください。あなたが戻ってきていないと言ったら、NSPredicateがHKQueryから返されたという意味ですか? HKQuery.predicateForActivitySummary()がnilであるか、HKActivitySummaryQueryの結果ハンドラnilに渡される結果ですか? – Allan

+0

@Allanああ、申し訳ありません!コードサンプルと、HKActivitySummaryQueryの結果ハンドラに表示されている内容の説明を追加しました。 – bryanjclark

答えて

0

file with Appleのバグのようです。しかし、回避策は簡単です:空の配列を取得した場合は、すべての値が0であるHKActivitySummaryと同じとみなすことができます。これは、バグが修正された場合に得られるものです。

+0

はい、HKActivitySummaryにはゼロよりも多くの情報があります。現在の移動目標があります。私の現在の計画は、*昨日の* Move Goalでそれを埋めることですが、ユーザーがMove目標を変更したばかりの場合、それは不正確になる可能性があります。 – bryanjclark

+0

良い点 - Appleがこれを修正できるようにバグを報告してください! – Allan