Сохранить список сообщений текущего пользователя в парсинг с помощью swift

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

Проблема в том, что я не знаю, как добавить текст в текстовое поле в массив и сохранить его для анализа.

Любая помощь приветствуется, и дайте мне знать, если вам нужна дополнительная информация!

ОБНОВИТЬ:

Это скриншоты моего анализа класса "Пользователь"

Это список друзей моего текущего пользователя в столбце "Друзья"

Я еще не создал столбец сообщений, потому что при запуске relationForKey код в Xcode он будет автоматически создавать для меня

ОБНОВЛЕНИЕ 2:

Это мой код:

@IBAction func addMessage(sender: AnyObject) {
    var newMessage = addMessageText.text
    let message = PFObject(className: "Messages")
    var query = PFQuery(className: "Messages")
    message["messageTextColumn"] = newMessage



    message.saveInBackgroundWithBlock {
        (success: Bool, error: NSError?) -> Void in
        if (success) {


            println("added to Message Class")
            query.whereKey("messageTextColumn", equalTo: newMessage)
            query.getFirstObjectInBackgroundWithBlock{(object:PFObject!, error: NSError!) -> Void in
                if error == nil {
                    let relation = PFUser.currentUser().relationForKey("Messages")
                    var addMessageWithObject = object
                    if addMessageWithObject != nil {
                        relation.addObject(addMessageWithObject)
                        println("Added with getFirstObject")
                    }
                    else{
                        println("Error Added with getFirstObject")
                    }
                }
            }



        } else {
            println("added to Message class Error")
        }
    }
    }

Сначала я сохраняю новое сообщение в массив, а затем сохраняю его с помощью saveInBackgroundWithBlock.. и внутри я запрашиваю это сообщение, чтобы добавить его в отношение.

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

"added to Message Class" and "Added with getFirstObject"  

Что означает, что мой код выполняется точно так, как и должно быть. Возможно о методе?
ОБНОВЛЕНИЕ 3 это объект println

<Messages: 0x7fd4484f75f0, objectId: LFXoSaHfQl, localId: (null)> {
ACL = "<PFACL: 0x7fd4484d2e70>";
messageTextColumn = 9;

}

ОБНОВЛЕНИЕ 4 это мой код

@IBAction func addMessage(sender: AnyObject) {
    var newMessage = addMessageText.text
    let message = PFObject(className: "Messages")
    var user = PFUser.currentUser()
    var query = PFQuery(className: "Messages")
    message["messageTextColumn"] = newMessage

        message.saveInBackgroundWithBlock {
            (success: Bool, error: NSError?) -> Void in
            if (success) {


                println("added to Message Class")
                query.getFirstObjectInBackgroundWithBlock{(object:PFObject!, error: NSError!) -> Void in
                    if error == nil {
                        var addMessageWithObject = object
                        if addMessageWithObject != nil {
                            user.saveInBackground()
                            println("Added with getFirstObject")
                        }
                        else{
                            println("Error Added with getFirstObject")
                        }
                    }
                }
            }
    }
}

пользовательский столбец (не определен), как на скриншоте здесь Таблица класса сообщений
и журнал ошибок can't add non pointer to relation вернулся

Как это исправить? Спасибо!

1 ответ

Вот что вы делаете:

  1. Вручную создайте свой Message стол на разборе
  2. Добавить messages столбец вашей пользовательской таблицы типа Relation с целевым классом в качестве вашего Message Таблица.
  3. В вашем коде, в ваших кнопках триггер:

    // Get the message text from your textField
    let messageText = textField.text
    
    // Create your new Message object
    let newMessage = PFObject(className: "Message")
    // ... Add your data to your new message object
    newMessage["messageTextColumn"] = messageText
    
    newMessage.saveInBackgroundWithBlock {
        (success: Bool, error: NSError?) -> Void in
        if (success) {
            // Add the new message to the user's relation
            let relation = yourUser.relationForKey("messagesColumnName")
            relation.addObject(newMessage)
    
            // Save the user object
            yourUser.saveInBackground()
        } else {
            // There was a problem, check error.description
        }
    }        
    

Вот ссылка на ссылку Parse Relation.

ОБНОВИТЬ:

Отсутствует код для сохранения вашего пользовательского объекта.

query.getFirstObjectInBackgroundWithBlock{(object:PFObject!, error: NSError!) -> Void in
            if error == nil {
                let relation = PFUser.currentUser().relationForKey("Messages")
                var addMessageWithObject = object
                if addMessageWithObject != nil {
                    relation.addObject(addMessageWithObject)

                    PFUser.currentUser().saveInBackground()

                    println("Added with getFirstObject")
                }
                else{
                    println("Error Added with getFirstObject")
                }
            }
        }

ОБНОВЛЕНИЕ 2:

Сообщения без PFRelation:

  1. Добавить столбец (скажем, user) типа Pointer с целевым классом в качестве _User к Messages таблица для идентификации каждого сообщения их пользователем.
  2. Сохранение новых сообщений: Сохраните новый объект сообщения, как описано выше (просто без добавления отношения и связанного с ним кода):

    @IBAction func addMessage(sender: AnyObject) {
        var newMessage = addMessageText.text
    
        let message = PFObject(className: "Messages")
        message["messageTextColumn"] = newMessage
        message["user"] = PFUser.currentUser()
    
        message.saveInBackgroundWithBlock {(success: Bool, error: NSError?) -> Void in
            if (success) {
                println("added to Message Class")
            } else {
                // Error saving message
            }
        }
    }
    
  3. Запрос сообщений для пользователя: вы можете сделать запрос, используя текущего пользователя в качестве ограничения, поэтому независимо от того, на какое устройство переключается конкретное устройство, он / она получит только свои сообщения.

    var query = PFQuery(className:"Messages")
    query.whereKey("user", equalTo:PFUser.currentUser())
    query.findObjectsInBackgroundWithBlock {
        ...
    }
    
Другие вопросы по тегам