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

标签 xcode swift uitableview parse-platform

这是我保存数据以快速解析 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()
    }

}

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

感谢任何帮助。
谢谢!

最佳答案

您的 addMessage 方法永远不会将对象保存到本地数据存储,它只会将它保存到服务器,您还应该调用 pinInBackground 来实际存储对象) 在本地数据存储中,它在 Local Datastore documentation 中进行了描述.

You can store a PFObject in the local datastore by pinning it. Pinning a PFObject is recursive, just like saving, so any objects that are pointed to by the one you are pinning will also be pinned.

关于xcode - 无法使用解析本地数据存储保存和查询数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31239527/

相关文章:

Xcode 7/Swift 2 Storyboard 崩溃 - Beta 1 和 4

ios - UITableView 的 subview 与 tableView 的高度不同

ios - prepareForSegue 从未调用过

ios - 将 UITableView 约束到其父 View 的边缘而没有 Storyboard

ios - 在Xcode .07和Xcode 7.1中的模拟器中应用Pay崩溃

ios - AVAudioRecorder.record() 在 iOS 8 中总是返回 "false"

ios - 约束似乎不适用于 UITableView 内的单元格

ios - 将 ViewController 中的函数传递给 GameOverScene.swift

xcode - 链接器错误(Clang)

ios - 当每个部分中的行数不同时,如何获取 numberOfRows 的计数?