解析:不查询本地数据存储区中的已保存对象

时间:2015-10-07 01:00:24

标签: ios swift parse-platform pfobject local-datastore

我目前正在开发一个广告资源应用。我的目标是从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 在本地DataStore"

中保存了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()"会工作,但它没有。有人可以帮帮我吗?

1 个答案:

答案 0 :(得分:0)

我不知道您将PFObject固定到本地数据存储区的位置。也许这就是你的问题。

调用任何PFObject个保存方法会将它们保存回您的解析服务器,而不是本地数据存储。查看如何使用pin来完成您想要的任务。

此外,将这些异步调用分派给主队列是没有意义的。它们已在后台队列上执行。在大多数情况下,如果要对UI执行某些操作,则只需要调度回主队列,并且应该在完成处理程序中完成。

相关问题