In my app users can post to Parse backend and their posts are displayed in a timeline (PFQueryTableViewController
). Each cell in this tableview has a button which the users can press to 'like' the post. Until yesterday I had the function to like sorted but suddenly today it is no longer working.
Now when a user likes a post it does a number of things: adds the user's objectId to an array in the post PFObject
("likedBy"), and adds the post PFObject
to a relation in the User class ("likedPosts").
But what seems to now be happening is it works but with the following problems:
Here is the code I am using, where am I going wrong? It was working fine yesterday and I don't think it is a Parse backend problem because I set the app up to work with an entirely new backend an hour ago and the problem persists.
func likePost(sender: UIButton) {
let hitPoint = sender.convertPoint(CGPointZero, toView: self.tableView)
let hitIndex = tableView.indexPathForRowAtPoint(hitPoint)
let object = objectAtIndexPath(hitIndex)
let userId = PFUser.currentUser()?.objectId
let relayedResponses = (PFUser.currentUser()?.relationForKey("likedPosts"))! as PFRelation
likedPosts.addObject(object!)
PFUser.currentUser()?.saveInBackground()
object?.addUniqueObject(userId!, forKey: "likedBy")
object?.saveInBackground()
self.tableView.reloadData()
}
And in my cellForRowAtIndexPath
I have:
cell.likeButton.tag = indexPath.row
cell.likeButton.addTarget(self, action: "likePost:", forControlEvents: UIControlEvents.TouchUpInside)
I will appreciate any help as this is DRIVING ME MAD!! I just can't see where the problem is!
You converting CGPointZero
to tableView. Its is actually CGPoint(0,0)
and always returns 0,0
which is first row of the table view.