Получение PFObject из выбранной строки и сохранение в другом классе анализа
Я все еще новичок в программировании, и я пытаюсь создать кнопку, которая будет сохранять currentUser
и EventID
из PFObject
, У меня есть класс в Parse под названием Users Attendance, который связывает пользователя с EventID
чтобы отслеживать все события, которые пользователь говорит, что они посетят. У меня возникают проблемы при настройке UIB-кнопки для сохранения EventID из PFObject, который находится в строке, выбранной из TableView
, Может ли кто-нибудь помочь, пожалуйста?
Вот настройка TableView:
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath, object: PFObject!) -> PFTableViewCell {
var cell = tableView.dequeueReusableCellWithIdentifier("Cell") as! EventsTableViewCell!
if cell == nil {
cell = EventsTableViewCell(style: UITableViewCellStyle.Default, reuseIdentifier: "Cell")
}
cell.attend.tag = indexPath.row
cell.attend.addTarget(self, action: "attendingEvent:", forControlEvents: UIControlEvents.TouchUpInside)
// Extract values from the PFObject to display in the table cell
if let eventTime = object?["EventTime"] as? String {
cell.EventTime.text = eventTime
}
if let eventName = object?["EventName"] as? String {
cell.EventName.text = eventName
}
var initialImage = UIImage(named: "DidNotLoad")
cell.EventImage.image = initialImage
if let parseEventPhoto = object?["EventImage"] as? PFFile{
cell.EventImage.file = parseEventPhoto
cell.EventImage.loadInBackground()
}
return cell
}
Здесь UIButton
Я попытался создать:
func attendingEvent(sender: UIButton) {
println("You tapped the button!")
let currentUser = PFUser.currentUser()
var getSenderInfo = sender.tag
var selectedRowInfo = self.tableView.indexPathForSelectedRow()
var objectFromRow = objectAtIndexPath(selectedRowInfo)
let eventID: PFObject = objectFromRow?["EventID"] as! PFObject
println(eventID)
var attendance = PFObject(className: "UsersAttendance")
attendance.setObject(currentUser!, forKey: "AttendingUser")
attendance.setObject(eventID, forKey: "EventID")
attendance.saveInBackgroundWithBlock {
(succeeded: Bool, error: NSError?) -> Void in
if error == nil {
} else {
}
}
}
1 ответ
Я, вероятно, выбрал бы другой подход и добавил бы отношение из класса Event к классу User и заполнил бы его посетителями.
Тем не менее, ваша проблема из-за несоответствия между EventID
на исходном и целевом объектах. В одном случае это строка, а в другом - указатель, поэтому вы не можете использовать их взаимозаменяемо.
У вас есть другие проблемы с этим подходом, хотя вы можете защищать их, например, всегда создавать новые UsersAttendance
экземпляры, для которых вам нужен какой-то другой способ проверить, есть ли уже элемент для этого пользователя и события, и какой-то другой способ удалить старые.