使用swift解析当前用户的消息列表

时间:2015-06-30 11:46:06

标签: ios swift parse-platform pfrelation

我为我的应用程序使用解析。我想让用户能够键入他们想要通过textField发送的消息,并通过视图控制器中的保存按钮将其保存到用PFRelation解析的用户的消息列中,消息将保存为数组并在tableView中显示。

问题是我不知道如何将文本字段中的文本添加到数组中并将其保存到解析中。

如果您需要任何其他信息,我们非常感谢您的帮助!

更新

These是我的解析课程的截图"用户"

This是我当前用户的朋友列表"朋友"专栏

我还没有创建消息列,因为在Xcode中运行relationForKey代码时它会自动为我创建

更新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")
                        }
                    }
                }
            }
    }
}

用户列是(未定义),如此处的屏幕截图所示 Messages class table
并且错误日志can't add non pointer to relation又回来了

我该如何解决这个问题?谢谢!

1 个答案:

答案 0 :(得分:0)

这是你做的:

  1. 在Parse
  2. 上手动创建Message
  3. messages列添加到类型为Relation的用户表格中,其目标类别为Message表格。
  4. 在您的代码中,在按钮中触发:

    // 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
        }
    }        
    
  5. Here's a link to Parse's Relation reference

    <强>更新

    缺少保存用户对象的代码。

    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. 将指针类型为Pointer的列(例如user)作为_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 {
          ...
      }