2

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

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

任何帮助表示赞赏,如果您需要任何其他信息,请告诉我!

更新:

这些是我的解析类“用户”的截图

是我当前用户在“朋友”栏中的朋友列表

我还没有创建 Messages 列,因为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 又回来了

我该如何解决?谢谢!

4

1 回答 1

0

这是你要做的:

  1. Message在 Parse 上手动创建表
  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 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. user向表中添加一个类型为 _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 {
        ...
    }
    
于 2015-07-01T02:25:11.630 回答