"ошибка: этот объект недоступен в автономном кэше" встречается только несколько раз с бэкэндом Parse
В настоящее время я добавил анализируемый бэкэнд в свой проект IOS и определил его для работы с локальным хранилищем данных. кажется, что все работает нормально, за исключением того, что иногда я получаю "Этот объект недоступен в автономном кеше", но я понял, что при использовании локального хранилища данных кеша вообще нет (включив его в моем AppDelegate, например: [ Разбор enableLocalDatastore];). проблема в том, что если я снова открою приложение, в конечном итоге этот объект будет успешно извлечен. кто-нибудь сталкивался с этой проблемой раньше?
РЕДАКТИРОВАТЬ: порядок звонков я делаю это
PFQuery *query = [PFQuery queryWithClassName:className];
[query fromLocalDatastore];
[query whereKey:someKey equalTo:someObject];
[query includeKey:@"someKey1"];
[query includeKey:@"someKey2"];
[query orderByAscending:@"date"];
[query findObjectsInBackground];
его построили для ios sdk 8.0 и разбора sdk 1.7.2
Спасибо!
3 ответа
Я была такая же проблема. Моя причина была в том, что я прикрепил одни и те же объекты запросов с одинаковыми именами в двух местах в моем коде. Когда я удаляю булавку с именем функции и просто прикрепляю их. У меня все отлично работает.
Вам необходимо создать надежную ссылку на этот недоступный объект, прежде чем прикреплять другой объект к локальному хранилищу данных. Без строгой ссылки объект будет удален из автономного кэша, даже если текущий и другой объект, который вы закрепили, будут сохранены. Следовательно, при повторном запросе вы получите сообщение об ошибке выше.
Убедитесь, что вы также закрепили любой из объектов, которые могут быть связаны с запросом, вызвав
[query includeKey:@"someKey1"];
для всех указателей на все объекты, которые могут быть необходимы.
Я получил эту ошибку при использовании запроса синтаксического анализа в реальном времени. Я обнаружил, что всякий раз, когда объект "обновлялся" с помощью моего оперативного запроса, его нужно было ПОЛНОСТЬЮ переписать, чтобы эта ошибка исчезла. Я прикалываюсь именами. Вот моя функция - репин.
extension PFObject {
func repin(className:String, completion: @escaping () -> Void) {
self.unpinInBackground(withName: className) { (success, error) in
if let error = error {
print(error)
} else {
self.pinInBackground(withName: className) { (success, error) in
if let error = error {
print(error)
} else {
completion()
}
}
}
}
}
}