Анализ: не запрашивает сохраненные объекты в локальном хранилище данных.

В настоящее время я разрабатываю приложение для инвентаризации. Моя цель — получить объекты из Parse, а затем сохранить их в локальном хранилище данных. Запрос объектов из Parse и их сохранение работает (из-за сообщения консоли), но более поздний запрос из локального хранилища данных ничего не извлекает! Вот мой код:

let query = PFQuery(className: "Publication")
    query.limit = 150
    query.selectKeys(["publication_id","publication_Type","publication_Name"])
    dispatch_async(dispatch_get_main_queue()) { () -> Void in
        query.findObjectsInBackgroundWithBlock({ (pubObject, error) -> Void in
            if error == nil {
                print("Succesfully retrieved \(pubObject!.count)")

                PFObject.saveAllInBackground(pubObject, block: { (success, error) -> Void in
                    print("Saved \(pubObject!.count) in local DataStore")
                })

            }
        })
    }

Это сообщение выходит из консоли XCode:

"Успешно получено 103 Сохранено 103 в локальном хранилище данных"

Пока все хорошо, верно? Это мой код, когда я собираюсь сделать запрос из локального хранилища данных:

dispatch_async(dispatch_get_main_queue()) { () -> Void in
        let bookQuery = PFQuery(className: "Publication")
            .fromLocalDatastore()
        bookQuery.whereKey("publication_Type", equalTo: "Book")
        bookQuery.findObjectsInBackgroundWithBlock { (bookObject, error) -> Void in

            if error == nil{
                print("Books found: \(bookObject!.count)")
                self.displayData(bookObject!)

            }
        }
    }

И получаю из консоли: Книг найдено: 0.

Что дает? Что я делаю не так? Я читал и читал и читал. НИЧЕГО. Я думал, что ".ignoreACL()" сработает, но это не так. Кто-нибудь может мне помочь?


person Gabriel Andres Bermudez    schedule 07.10.2015    source источник


Ответы (1)


Я не вижу, где вы прикрепляете PFObject к локальному хранилищу данных. Возможно, это ваша проблема.

Вызов любого из методов сохранения PFObjects сохраняет их обратно на ваш сервер синтаксического анализа, а не в локальное хранилище данных. Посмотрите, как использовать pin для достижения желаемого.

Кроме того, нет смысла отправлять эти асинхронные вызовы в основную очередь. Они уже выполняются в фоновой очереди. В большинстве случаев вам нужно только отправить обратно в основную очередь, если вы хотите что-то сделать с пользовательским интерфейсом, и это должно быть сделано в обработчике завершения.

person Scott H    schedule 07.10.2015
comment
Итак, я закрепляю объекты, но все равно не могу их получить. - person Gabriel Andres Bermudez; 17.10.2015