2017-12-27 231 views
0

我目前正试图决定如何在我的iOS应用程序中实现信号量。我有一个表格视图,每行代表一首歌曲。每行包含该歌曲收到的投票数量以及投票的向上和向下箭头的计数。每首歌都有自己的计数,因此歌曲1可以有0票,歌曲2可以有5票。目前,如果多人同时对Song 1进行投票,我会遇到问题,因为号码没有正确更新。Swift 4和Firebase中的信号量建议

我打算使用信号量来解决这个问题。但是,我希望在表视图中的每一行都有一个信号量。这可能吗?有关如何更好地解决此问题的任何建议?

+0

只需使用并发队列并从队列中更新数据库。为什么每行需要1个信号量?你是指多人在同一时间投票? – Brandon

+0

嗨,感谢您的回复!如果有1000首歌曲和1000人投票,创建一个信号量将有999个人在等待,即使他们都在不同的歌曲上进行投票。正确? – Sarah

回答

3

如果有1000首歌曲和1000人投票,产生一个信号 将有999人在等待,即使他们都在不同的 的歌曲投票。正确?

如果你有一百万人,你会有一百万信号量来同步你的数据库吗?考虑缩放..

您需要为您的数据库使用Transaction操作。看到这里:https://firebase.google.com/docs/database/ios/read-and-write#save_data_as_transactions

上面的例子似乎是你试图做的(星级和增量计数器投票)相同的事情。

无论如何,您无法同步远程数据库与客户端上的sempahore。除非我误认为您的数据库是本地数据库。在任何情况下,交易操作都是可行的。

+1

这正是我所期待的。不太确定我错过了它。非常感谢! – Sarah