"ошибка: этот объект недоступен в автономном кэше" встречается только несколько раз с бэкэндом 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()
                }
            }
        }
    }
}
}
Другие вопросы по тегам