Сохранить список сообщений текущего пользователя в парсинг с помощью 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 ответ
Вот что вы делаете:
- Вручную создайте свой
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 } }
Вот ссылка на ссылку 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:
- Добавить столбец (скажем,
user
) типа Pointer с целевым классом в качестве _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 { ... }