Ни class reference, ни какой-либо учебник, доступный в Интернете, не говорит ничего о кеширование привязки между запусками приложений.HKAnchoredObjectQuery автоматически кэширует привязку?
Я хочу запросить данные между запусками приложений, поэтому я получаю все исторические записи HealthKit
. Сначала я подумал, что мне нужно сохранить последний запрос NSDate
в NSUserDefaults
и в следующем приложении. Я просто удалю это значение и задаю его как startDate
из HKSampleQuery
, но после некоторого чтения я пришел на эту классную вещь под названием HKAnchoredObjectQuery
, которая должна работайте с этим кэшированием для меня, поэтому всякий раз, когда я ударяю, я получаю только новые записи.
Этот класс автоматически сохраняет привязки или он просто хранит его при запуске приложения, а когда приложение завершается, все очищается, и я начинаю снова с HKAnchoredObjectQueryNoAnchor
?
Это правда, что вам нужно сохранить якорь в каком-то месте, например NSUserDefaults. Неверно, что результаты автоматически сортируются в порядке возрастания по дате. Они сортируются в порядке привязки. Попробуйте добавить образец в HealthKit из прошлого, и вы увидите, что это следующий объект, возвращаемый HKAnchoredObjectQuery. – Allan
Кроме того, даты не были бы надежным способом отслеживания изменений для этого типа запросов. Целочисленный якорь является монотонно увеличивающимся числом, которое предназначено для отслеживания того, что ваше приложение увидело, и того, что у него нет, независимо от дат, связанных с образцом. – Allan
Ну да, но целое число короткое ... Я думаю, что «HealthKit» может достичь предела и что позже? – cojoj