2015-07-06 3 views
1

Это мой код для сохранения данных для анализа 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() 
    } 

} 

Проблема в том, что когда я пытаюсь открыть ячейку таблицы сообщений без подключения к Интернету, сообщение, которое я сохранил, вообще не отображается в ячейке таблицы сообщений, и похоже, что оно не сохраняло данные в локальном хранилище данных синтаксического анализа.

Любая помощь приветствуется.
Спасибо!

+0

Возможный дубликат [как использовать локальный хранилище данных для сохранения и запроса данных с помощью синтаксического анализа и быстрого) (http://stackoverflow.com/questions/31217145/how-to-use-local-datastore-to-save -and-query-data-with-parse-and-swift) – Fogmeister

ответ

0

Ваш метод addMessage никогда не сохраняет объект в локальном хранилище, оно только сохраняет его на сервер, вы должны позвонить pinInBackground, а на самом деле сохранить объект (ы) в локальном хранилище, оно описано в Local Datastore documentation.

Вы можете сохранить PFObject в локальном хранилище данных, зафиксировав его. Pinning PFObject является рекурсивным, так же как и сохранение, поэтому любые объекты, которые обозначены номером , которым вы прикрепляетесь, также будут закреплены.

+0

Я попробовал, но это не сработало. моему приложению все еще нужно подключение к Интернету, чтобы показать список сообщений. Наверное, с тем, как я запрашиваю данные сообщения? – sin90