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