[英]how to use local datastore to save and query data with parse and swift
[英]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.