2017-12-27 522 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