使用fromLocalDataStore()和saveEventually()进行PFQuery缓存

时间:2015-02-17 22:36:44

标签: swift parse-platform

我正在查询Parse以返回用户创建的所有Tournament对象的列表。但是,saveEventually()取消LDS中的对象,因此如果它们具有网络连接,则查询返回空。

override func viewDidLoad() {
    super.viewDidLoad()

    var query = PFQuery(className:"Tournament")
    query.orderByAscending("createdAt")
    query.whereKey("createdBy", equalTo: PFUser.currentUser())
    query.fromLocalDatastore()
    query.findObjectsInBackgroundWithBlock {
        (objects: [AnyObject]!, error: NSError!) -> Void in
        if (error == nil) {
            self.tournaments = objects;
            self.tableView.reloadData()
            PFObject.pinAllInBackground(objects)
        } else {
            NSLog("Error: %@ %@", error, error.userInfo!)
        }
    }
}

我想保持所有创建的对象在本地缓存,以便可以脱机访问它们。这可能吗?

1 个答案:

答案 0 :(得分:0)

您可以将saveInBackgroundWithBlock与数据结合使用(将其保存到本地数据存储区)。这将同步到LDS和Parse服务器,而不会在网络保存操作完成时从LDS中删除任何内容。

更好的是,您可以为PFQuery创建一个类别,该类别定义了一个名为saveToCacheAndNetworkInBackgroundWithBlock:的新方法(或更简洁的方法),可以在不使用saveEventually的情况下执行这两个操作。