2017-12-27 22 views
0

現在、私のiOSアプリケーションでセマフォを実装する方法を決定しようとしています。私は、各行が曲を表すテーブルビューを持っています。各行には、曲が受け取った投票の数と投票するための上下の矢印が含まれています。ソング1は0票を、ソング2は5票を持つことができるように、各歌はそれ自身のカウントを有する。現在、複数のユーザーが同時にソング1で投票している場合、番号が正しく更新されないため、問題が発生します。Swift 4とFirebaseでのセマフォ提案

私はこの問題を解決するためにセマフォを使用することを計画していました。しかし、私は、テーブルビューの各行にセマフォがあることを望みます。これは可能ですか?どのようにこの問題をよりよく解決するための提案?

+0

並行キューを使用し、キューからデータベースを更新するだけです。なぜ、1行に1つのセマフォーが必要ですか?同時に複数の人が投票しているという意味ですか? – Brandon

+0

こんにちは返信いただきありがとうございます! 1000曲と1000人の投票がある場合、1つのセマフォを作成すると、すべてが異なる曲で投票しても999人が待機します。正しい? – Sarah

答えて

3

千曲と1つのセマフォ を作成し、投票1000人が、彼らはすべての異なる 曲に投票している場合でも、待っている999人を持っていますがある場合。正しい?

100万人がいる場合、データベースを同期するのに100万のセマフォがありますか?スケーリングについて考えてみてください。

データベースにはTransactionオペレーションを使用する必要があります。ここをクリックしてください:https://firebase.google.com/docs/database/ios/read-and-write#save_data_as_transactions

上記の例は、あなたがしようとしているのと同じようです(星とインクリメンタルカウンタで投票する)。

とにかくクライアント側のセマフォとリモートデータベースを同期させることはできません。間違ってDBがローカルでない限り、リモートデータベースは同期できません。いずれにしても、トランザクション処理が必要です。

+1

これはまさに私が探していたものです。どのように私はそれを逃したか分からない。本当にありがとう! – Sarah

関連する問題