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添加到post
PFObject
(“likedBy”)中的数组中,并将post
PFObject
添加到用户类(“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!奇怪的是,我尝试了我以前的代码,它再次工作,但我现在选择了你的修订,因为我知道它们确实工作,我现在明白了为什么它们工作。谢谢