繁体   English   中英

无法使用解析本地数据存储来保存和查询数据

[英]Cannot save and query data with parse local datastore

这是我的代码,用于保存数据以快速解析localDatastore

@IBAction func addMessage(sender: AnyObject) {

    var newMessage = addMessageText.text

    let message = PFObject(className: "Messages")
    var user = PFUser.currentUser()
    message["messageTextColumn"] = newMessage
    message["user"] = user!.objectId


    message.saveInBackgroundWithBlock {(success: Bool, error: NSError?) -> Void in
        if (success) {
            println("added to Message Class")
           println(user)
            message.saveInBackground()


        } else {
            // Error saving message
        }
    }
}

这就是我如何在messagesListController类中查询该数据

 @IBOutlet var messageTableView: UITableView!
var messageArray:[String] = ["Lope"]
override func viewDidLoad() {
    super.viewDidLoad()
    retrieveMessagesLocally()
    retrieveMessages()
    }
func retrieveMessagesLocally(){ // function that query the message data from parse local datastore
    let query = PFQuery(className: "Messages")
    query.fromLocalDatastore()
    var currentUser = PFUser.currentUser()
    query.whereKey("user", equalTo: currentUser!.objectId!)
    query.findObjectsInBackground().continueWithBlock {
        (task) -> AnyObject in
        if let error = task.error {
            println("Error: \(error)")
            return task
        }

        println("Retrieved \(task.result.count)")
        return task
    }
}
func retrieveMessages() {
    var query = PFQuery(className:"Messages")
    var user = PFUser.currentUser()
    query.whereKey("user", equalTo:user!.objectId!)
    query.findObjectsInBackgroundWithBlock { [weak self]
        (objects:[AnyObject]?, error:NSError?) -> Void in
        println(objects)
        println("succeed")
        let messages = objects
        for object in objects!{
            if let message = object["messageTextColumn"] as? String {
                println(object)
                self?.messageArray.append(message)

            }

        }

         self?.tableView.reloadData()
    }

}

问题是当我尝试在没有Internet连接的情况下打开消息表视图单元格时,我保存的消息根本没有出现在消息表视图单元格中,而且似乎也没有将数据保存到解析本地数据存储中。

任何帮助表示赞赏。
谢谢!

您的addMessage方法永远不会将对象保存到本地数据存储中,而只会将其保存到服务器,您还应该调用pinInBackground来将对象实际存储在本地数据存储中,这在“ 本地数据存储”文档中有描述。

您可以通过固定PFObject将其存储在本地数据存储中。 像保存一样,固定PFObject是递归的,因此,您要固定的对象所指向的任何对象也将被固定。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM