【问题标题】:Parse: Does not query saved objects in local datastore解析:不查询本地数据存储中保存的对象
【发布时间】:2016-01-04 02:06:19
【问题描述】:

我目前正在开发一个库存应用程序。我的目标是从 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()”会起作用,但它没有。谁能帮帮我?

【问题讨论】:

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


    【解决方案1】:

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

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

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

    【讨论】:

    • 好的,所以我固定了对象,但我仍然无法检索它们。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-14
    • 2015-11-26
    • 1970-01-01
    相关资源
    最近更新 更多