Я в тупике.У меня есть код, который отлично работает на симуляторе iOS, но когда я отлаживаю на реальном устройстве, объект HKAnchoredObjectQuery неактивен до его запуска: <HKAnchoredObjectQuery:0x2816e8780 inactive>
И затем деактивируется после выполнения в обработчике результатов: <HKAnchoredObjectQuery:0x2816e8780 deactivated>
Мой код выглядит следующим образом:
var query = new HKAnchoredObjectQuery(type, compoundPredicate, lastAnchor, nuint.MaxValue, new HKAnchoredObjectResultHandler2(
(q, results, anchor, error) =>
{
if (error != null)
{
_logger.Error("GetCountSinceLastAnchor: {description}", error.DebugDescription);
}
var totalCountInThisAnchor = results.Cast<HKQuantitySample>().Sum(sample => sample.Quantity.GetDoubleValue(unit));
_logger.Information("GetCountSinceLastAnchor: type:{type}, count: {count}, lastAnchor:{lastAnchor}, New Anchor:{anchor}", type.DebugDescription, totalCountInThisAnchor, lastAnchor, anchor);
taskCompletionSource.SetResult(Tuple.Create(totalCountInThisAnchor, anchor));
}));
_healthKitStore.ExecuteQuery(query);
Итак, точка останова на ExecuteQuery
дает мне «неактивный» тег для объекта query
, а точка останова на if (error != null)
даетменя "деактивировали" на q
.
У кого-нибудь есть идеи, почему это происходит?Как я уже говорил, все это прекрасно работает на симуляторе iOS.
Кроме того, я знаю, что это не проблема разрешения на чтение, потому что у меня есть HKSampleQuery
, который возвращает результаты того же типа, к которому я обращаюсь ввключенный код.