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

问题描述:

我目前正在开发库存应用程序。我的目标是从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()”可以工作,但它没有。任何人都可以帮助我吗?

我没有看到您将PFObject固定在本地数据存储中。也许这是你的问题。

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

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

+0

好吧,我固定的对象,但我仍然无法检索它们。 –