我为我的应用程序使用解析。我想让用户能够键入他们想要通过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")
}
}
}
}
}
}
用户列是(未定义),如此处的屏幕截图所示
并且错误日志can't add non pointer to relation
又回来了
我该如何解决这个问题?谢谢!
答案 0 :(得分:0)
这是你做的:
Message
表
messages
列添加到类型为Relation
的用户表格中,其目标类别为Message
表格。在您的代码中,在按钮中触发:
// 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的消息:
user
)作为_User添加到Messages
表,以便用户识别每条消息。保存新邮件:保存上面的新邮件对象(只是不添加关系,而是相关代码):
@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
}
}
}
查询用户的消息:您可以使用当前用户作为约束进行查询,因此无论特定切换到哪个设备,他/她都只会收到他的消息。
var query = PFQuery(className:"Messages")
query.whereKey("user", equalTo:PFUser.currentUser())
query.findObjectsInBackgroundWithBlock {
...
}