gpt4 book ai didi

ios - 使用 swift 将当前用户的消息列表保存在解析中

转载 作者:搜寻专家 更新时间:2023-11-01 05:40:32 24 4
gpt4 key购买 nike

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

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

感谢任何帮助,如果您需要任何其他信息,请告诉我!

更新:

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

This是我当前用户在“ friend ”列中的 friend 列表

我还没有创建 Messages 列,因为在 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 将其保存。然后在内部查询该消息以将其添加到关系中。

我添加的消息出现在 Messages 类表中,但不在该用户的关系中,但它显示日志

"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. 在 Parse 上手动创建您的 Message
  2. messages 列添加到类型为 Relation 的用户表中,将 Target Class 作为您的 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
    }
    }

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. Messages 表中添加一列(假设为 user),目标类为 _User 的 Pointer 类型,以识别用户的每条消息。
  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 {
    ...
    }

关于ios - 使用 swift 将当前用户的消息列表保存在解析中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31137385/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com