swift - 知道为什么这个函数正在写入/更新表中的第一个单元格而不是 CFQuery TableViewController 中选定的单元格吗?

标签 swift parse-platform uibutton save pfquerytableviewcontrolle

在我的应用程序中,用户可以发布到 Parse 后端,他们的帖子会显示在时间线中 (PFQueryTableViewController)。该表格 View 中的每个单元格都有一个按钮,用户可以按下该按钮来“喜欢”该帖子。直到昨天我还有排序功能,但今天突然它不再工作了。

现在,当用户喜欢某个帖子时,它会执行许多操作:将用户的 objectId 添加到帖子 PFObject("likedBy") 中的数组,并添加帖子 PFObject 到 User 类中的关系(“likedPosts”)。

但现在看来它可以工作,但存在以下问题:

  • 它通常会喜欢表格 View 顶部的任何帖子/单元格,而不是用户实际点击的帖子/单元格——例如点击表格中第 4 个帖子上的“赞”按钮,它就会喜欢第 1 个帖子
  • 它可能喜欢预期的帖子,但此后用户无法喜欢其他任何内容
  • 或者它可能根本不喜欢任何东西

这是我正在使用的代码,我哪里出错了?昨天工作正常,我不认为这是 Parse 后端问题,因为我在一小时前将应用程序设置为使用全新的后端,但问题仍然存在。

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()

}

在我的 cellForRowAtIndexPath 中,我有:

cell.likeButton.tag = indexPath.row
    cell.likeButton.addTarget(self, action: "likePost:", forControlEvents: UIControlEvents.TouchUpInside)

我将不胜感激任何帮助,因为这让我发疯!我就是看不出问题出在哪里!

最佳答案

您将CGPointZero转换为tableView。它实际上是 CGPoint(0,0) 并且始终返回 0,0,这是表格 View 的第一行。

关于swift - 知道为什么这个函数正在写入/更新表中的第一个单元格而不是 CFQuery TableViewController 中选定的单元格吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34206944/

相关文章:

ios - 以编程方式添加自定义按钮相互混淆

iphone - 如何删除已损坏的 UIButton 的灰色外观

xcode - “再玩一次”按钮无法正常工作

ios - Swift - ios - 创建气球按钮

swift - 这个 Swift 类型错误是什么意思?听起来就像预期的那样

ios - 打开并编辑Swift 3.0插件SDK

Xcode - 解析和 facebook 头文件(SDK)错误

ios - 快速消除宽高比限制

ios - 一对多关系解析

ios - 使用 parse.com 在应用程序中处理推送通知