[英]Cannot save and query data with parse local datastore
This is my code to save data to parse localDatastore in swift 这是我的代码,用于保存数据以快速解析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
}
}
}
and this is how I query for that data in messagesListController Class 这就是我如何在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()
}
}
The problem is when I try to open message tableview cell without internet connection the message that I saved didn't appear in message tableview cell at all and it seems that it didn't save the data into the parse local datastore as well. 问题是当我尝试在没有Internet连接的情况下打开消息表视图单元格时,我保存的消息根本没有出现在消息表视图单元格中,而且似乎也没有将数据保存到解析本地数据存储中。
Any help is appreciated. 任何帮助表示赞赏。
Thanks! 谢谢!
Your addMessage
method never saves the object to the local datastore, it only saves it to the server, you should call pinInBackground
as well to actually store the object(s) in the local datastore, it is described in the Local Datastore documentation . 您的
addMessage
方法永远不会将对象保存到本地数据存储中,而只会将其保存到服务器,您还应该调用pinInBackground
来将对象实际存储在本地数据存储中,这在“ 本地数据存储”文档中有描述。
You can store a PFObject in the local datastore by pinning it.
您可以通过固定PFObject将其存储在本地数据存储中。 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.
像保存一样,固定PFObject是递归的,因此,您要固定的对象所指向的任何对象也将被固定。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.