基本上,我尝试在桌面视图中尝试更改Firebase中的值时遇到一些困难。我目前正在尝试制作一个类似Facebook的帖子,让人们喜欢你的帖子。但是,我不太清楚我将如何继续这项工作。我想让用户能够喜欢每篇文章,然后保存之前的喜欢+喜欢的文章,并将其更新到firebase中。截至目前,我只有代码显示每个帖子,还有按钮的@IBAction(Like按钮)。Swift/Firebase从表格视图中更改值
我不知道我将如何通过使用indexPath.row(?)来访问每个特定帖子,只通过表视图。这里是我到目前为止的代码:
帖子编辑:
所以基本上我有一个tableview中,包含显示喜欢每个岗位都有量的表视图单元格。要做到这一点,我有这样的代码在我viewDidLoad中(),刚刚从火力地堡获取数据:
ref.childByAppendingPath("posts").queryOrderedByChild("timeRegistered").observeEventType(FEventType.ChildAdded) { (snapshot:FDataSnapshot!) in
var dict = [String:String]()
dict["keys"] = snapshot.key as? String
dict["votes"] = snapshot.value["likes"] as? String
self.posts.append(dict)
self.tableView.reloadData()
}
仅举,此代码的工作,通过在的cellForRowAtIndexPath使用此代码:cell.textLabel!.text = String(posts[indexPath.row]["names"]!)
但是,我认为,我在viewDidLoad中(.ChildAdded功能)使用的代码将与ChildChanged工作一样,所以这是我想出了:
ref.childByAppendingPath("posts").queryOrderedByChild("timeRegistered").observeEventType(FEventType.ChildChanged) { (snapshot:FDataSnapshot!) in
var dict = [String:String]()
dict["keys"] = snapshot.key as? String
dict["votes"] = snapshot.value["votes"] as? String
self.posts.append(dict)
self.tableView.reloadData()
}
不幸的是,它看起来像的tableview只显示新值(值从IBAction,我也会提供这些代码。) - 虽然旧值只停留在那里。这是一个不断变化的值的代码:
var key = posts[1]["keys"]
ref.childByAppendingPath("posts").childByAppendingPath(key!).updateChildValues(["name":"Test name"])
tableView.reloadData()
仍试图找出变化的精确值,通过指数的一个更好的方式 - 但事实并非如此,现在(因此帖[1] [“钥匙”] )。你好像明白问题是什么?总结:我想单击一个表格视图单元格内的按钮,并向特定的帖子中添加一个像,并实时更新总数。
这是一个有点不清楚你想要做什么;还有,界面是什么?是“票”还是“喜欢”同一件事?一个简单的解决方案就是在每行上按一下+按钮,当用户点击+时,就会增加投票/赞成。你知道它通过clickedRow是哪一行,或者可能有处理点击的自定义单元格。 – Jay
所以基本上我想添加'likes'函数,就像你可以称之为的那样 - 我想要它在按'like'后立即更新记录(旧的喜欢+ 1个新的类似)。 – askaale
我这么认为......不要过于复杂。只需点击一个+按钮即可获得IBAction。确定哪一行被点击,然后从你的帖子数组[clickedRow]中获取当前喜欢的,增加喜欢,然后通过Firebase Key和那个行的子节点likes.setValue(votes)更新Firebase中的值。 – Jay