Swift 知道为什么这个函数正在写入/更新表中的第一个单元格,而不是PFQueryTableViewController中的选定单元格吗?
在我的应用程序中,用户可以发布到分析后端,他们的帖子显示在时间轴中(Swift 知道为什么这个函数正在写入/更新表中的第一个单元格,而不是PFQueryTableViewController中的选定单元格吗?,swift,parse-platform,uibutton,save,pfquerytableviewcontrolle,Swift,Parse Platform,Uibutton,Save,Pfquerytableviewcontrolle,在我的应用程序中,用户可以发布到分析后端,他们的帖子显示在时间轴中(PFQueryTableViewController)。此tableview中的每个单元格都有一个按钮,用户可以按该按钮“喜欢”帖子。直到昨天,我才有了喜欢排序的功能,但今天突然它不再工作了 现在,当用户喜欢post时,它会做很多事情:将用户的objectId添加到postPFObject(“likedBy”)中的数组中,并将postPFObject添加到用户类(“likedPosts”)中的关系中 但现在似乎发生的是,它起作用
PFQueryTableViewController
)。此tableview中的每个单元格都有一个按钮,用户可以按该按钮“喜欢”帖子。直到昨天,我才有了喜欢排序的功能,但今天突然它不再工作了
现在,当用户喜欢post时,它会做很多事情:将用户的objectId添加到postPFObject
(“likedBy”)中的数组中,并将postPFObject
添加到用户类(“likedPosts”)中的关系中
但现在似乎发生的是,它起作用了,但存在以下问题:
- 它通常会喜欢任何位于tableview顶部的帖子/单元格,而不是用户实际单击的帖子-例如,点击表格中第四篇帖子上的like按钮,它会喜欢第一篇帖子
- 它可能喜欢预期的帖子,但之后用户就不会喜欢其他任何东西了
- 或者它可能一点都不像
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()
}
在我的单元格中,我有:
cell.likeButton.tag = indexPath.row
cell.likeButton.addTarget(self, action: "likePost:", forControlEvents: UIControlEvents.TouchUpInside)
我将感谢任何帮助,因为这让我发疯!!我就是看不出问题出在哪里 您可以将CGPointZero
转换为tableView。它实际上是CGPoint(0,0)
并且总是返回0,0
,这是表视图的第一行。谢谢!你知道我将如何确保它只喜欢我点击的帖子/行,而不是第一行吗?使用按钮的标记像这样让index=sender.tag
然后让object=objectAtIndexPath(index)
啊这现在更有意义了。。。但是现在我在objectAtIndexPath(index)行中出现了一个错误,它说“无法将类型为“Int”的值转换为预期的参数类型“NSIndexPath”,所以请更改为该类型let index=nsindepath(forItem:sender.tag,第0节)
Perfect!奇怪的是,我尝试了我以前的代码,它再次工作,但我现在选择了你的修订,因为我知道它们确实工作,我现在明白了为什么它们工作。谢谢