質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Firebase

Firebaseは、Googleが提供するBasSサービスの一つ。リアルタイム通知可能、並びにアクセス制御ができるオブジェクトデータベース機能を備えます。さらに認証機能、アプリケーションのログ解析機能などの利用も可能です。

Cloud Firestore

Cloud Firestore は、自動スケーリングと高性能を実現し、アプリケーション開発を簡素化するように構築された NoSQLドキュメントデータベースです。

iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

Q&A

1回答

1914閲覧

SwiftでFirestore,Firebaseを使って4人をマッチングさせて遊ぶゲームを作りたい

sunsan13559

総合スコア4

Firebase

Firebaseは、Googleが提供するBasSサービスの一つ。リアルタイム通知可能、並びにアクセス制御ができるオブジェクトデータベース機能を備えます。さらに認証機能、アプリケーションのログ解析機能などの利用も可能です。

Cloud Firestore

Cloud Firestore は、自動スケーリングと高性能を実現し、アプリケーション開発を簡素化するように構築された NoSQLドキュメントデータベースです。

iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

0グッド

1クリップ

投稿2020/01/09 07:19

前提・実現したいこと

今僕はswiftでiosアプリを作っています。
そこで、Cloud Firestoreを使って4人でマッチングをする方法を模索しているのですが、サイトでもなかなか見つからず、完成させることができません。
また、フィールドの最大を制限する,4人になったら締め切る(true)にするという作業もあったら教えていただきたいです。
よろしくお願いします。

該当のソースコード

swift

1 @IBAction func practice(_ sender: UIButton) { 2 3 let db = Firestore.firestore() 4 5 db.collection("rooms").whereField("status", isEqualTo: false).getDocuments { (querySnapshot, error) in 6 7 guard var documents = querySnapshot?.documents else{ 8 return 9 } 10 11 12 if documents.isEmpty { 13 // 0件だった時の処理 14 db.collection("rooms").addDocument(data: [ 15 "id": Auth.auth().currentUser?.uid, 16 "status": false 17 18 ]) 19 20 }else{ 21 let document = documents[0] 22 } 23 } 24 25 } 26 27@IBAction func count(_ sender: UIButton) { 28 29 let db = Firestore.firestore() 30 31 32 db.collection("rooms").getDocuments() 33 { 34 (querySnapshot, err) in 35 36 if let err = err 37 { 38 print("Error getting documents: (err)"); 39 } 40 else 41 { 42 var count = 0 43 for document in querySnapshot!.documents { 44 count += 1 45 print("(document.documentID) => (document.data())"); 46 } 47 48 print("Count = (count)"); 49 } 50 } 51 52 53 54 }

試したこと

とにかくネットに潜り続けました。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

nskydiving

2020/01/11 08:20

マッチングの実装方法が分からなくて困っているのは分かりましたが、何を質問したいのか分かりません。 具体的にどの部分が質問で、何を知りたいのでしょうか?
sunsan13559

2020/01/13 06:11 編集

返事遅くなってしまい、申し訳ありません。 「Cloud Firestoreを使ってマッチングをする方法」です。 ブール値を使ってtrue,falseを入れ替えてfalseの時に部屋に入れ、4人になったらtrueにし、その時部屋を制限しマッチング完了 のようなことをやりたいです。 もし他の方法などありましたらご教示願います。
nskydiving

2020/01/15 07:20

提示されているコードには「4人になったらtrueにし」という部分が実装されていないようなので、まずその部分を実装してみてはどうでしょうか。
sunsan13559

2020/01/15 16:54

僕の実力不足もあり、そのやり方もわからないのが現状です。
guest

回答1

0

提示されているコードでは、ルームに参加しているユーザーが何人いるのか分かりません。

シンプルにルームに参加しているユーザーIDをリストで持っておくだけで良いと思います。

db.collection("rooms").add( user_ids: [1001, 1002, 1003, 1004] )

あとはuser_idsの空きがある(3人以下の)ルームを探して、ルームに参加させ、空きがなくなったらマッチング完了と判断すれば良いでしょう。

Firestore でドキュメントの追加、取得、更新といった基本操作ができれば、実装はそれほど難しくないと思います。

投稿2020/01/16 02:31

nskydiving

総合スコア6500

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問