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

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

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

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

iOS

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

Swift

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

Q&A

解決済

2回答

393閲覧

ログインしているユーザーの性別と逆の性別をもつユーザーのデータをFirebaseから取得したい。

Yuya_Kimura

総合スコア11

Firebase

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

iOS

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

Swift

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

0グッド

0クリップ

投稿2019/06/03 05:00

編集2019/06/03 05:03

前提・実現したいこと

マッチングアプリに近い機能をもつSNSアプリを作成しています。
ユーザーの性別がMaleであれば、フィードにFemaleのデータを表示
ユーザーの性別がFemaleであればその逆を表示する機能を実装中です。

発生している問題・エラーメッセージ

Firebaseにユーザーのデータ(名前や性別)をアップロードすることはできており、取得の方法もわかるのですが ログインしているユーザーの性別に応じて、取得するデータ変える(ログインしているユーザーが男性なら女性のデータを取得し、表示。逆もまたしかり) ことができず、苦戦しています。お力を貸していただけますと幸いです。 初投稿でありますので、情報の不足など、至らない点がありましたら遠慮なくご指摘ください。

以下のような形で、データをFirebaseにアップロードしています。

該当のソースコード

Swift

1 2 if Auth.auth().currentUser != nil { 3 4 guard let uid = Auth.auth().currentUser?.uid else { return } 5 6 //ログインしているユーザーのデータを取得。 7 Database.database().reference().child("Profile").child(uid).observeSingleEvent(of: .value) { (snapshot) in 8 9 guard let dictionary = snapshot.value as? Dictionary<String,String> else { return } 10 let snapshotValue = snapshot.value as! Dictionary<String,String> 11 let snapShotValue2 = snapshot.value as! Dictionary<String,[String]> 12 13 let genderValue = snapshotValue["gender"] 14 15 //ログインしているユーザーの性別によって、フィードに表示するユーザーの性別を変える。 16 if genderValue == "male" { 17 18 let homeDataRef = Database.database().reference() 19 homeDataRef.observe((.childAdded), with: { (snapshot) in 20 21 //この辺に何を書いたらいいかがわかりません。 22 23 24 25 }) 26 27 28 29 30 } else if genderValue == "female" { 31 32 } else { 33 return 34 } 35 36 } 37

試したこと

現在のユーザーデータを取得するところまではできました。
その後、データ取得系の記事をいくつか見ても参考になりそうなものが見つからず苦戦しています。

その他バージョンなどの情報

開発環境:
Xcode 10.1
Swift 4.2.1

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

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

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

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

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

guest

回答2

0

ベストアンサー

「逆」である必要はないのでは?
希望するパートナーの性別を必須事項として入力してもらえば
「男=男」でも「女=女」でもヒットさせられるでしょう。

投稿2019/06/03 05:04

yambejp

総合スコア114747

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

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

退会済みユーザー

退会済みユーザー

2019/06/03 06:56 編集

それでしたらLGBTと言った問題にも対応できて一石二鳥ですね
Yuya_Kimura

2019/06/03 07:11

コメント、アドバイスありがとうございます。 事前に共有しておらず大変恐縮なのですが、サービスの設計の段階で、性別の問題には段階的に対処していこうという風に決まりました。 そのため、(生物学的な意味での)同性が同性の方に相談するという処理は一旦、今後のロードマップのなかに入れさせていただいております。 重ねてではありますが、ご指摘ありがとうございます。 where句というものに関しての理解をする必要があるようなので、そちらのドキュメントを見てみます。
guest

0

以下のような形で記入することで、性別のデータを指定して取得することができました。
ありがとうございました!

let homeDataRef = Database.database().reference().child("Profile").queryOrdered(byChild: "gender").queryEqual(toValue: "Male")

参考ドキュメント

投稿2019/06/05 04:12

Yuya_Kimura

総合スコア11

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.49%

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

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

質問する

関連した質問