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

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

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

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

Swift

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

Q&A

解決済

1回答

2838閲覧

エラーメッセージを適切に表示したい。swiftでユーザー登録画面を作成しています。

Megum

総合スコア7

Firebase

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

Swift

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

0グッド

0クリップ

投稿2018/06/07 15:51

前提・実現したいこと

ここに質問の内容を詳しく書いてください。
初心者です。
swiftでSNSアプリを作成しています。
Firebaseを使用してユーザーの認証を行っています。

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

アプリはビルドは成功します。 ユーザーのメールとパスワード入力のところで、 メールアドレスとパスワードの両方が記入されている場合Resistered Succesfullyというメッセージが出て画面が遷移するようにしています。 今現在これは成功します。 しかし、 ・メールアドレスが登録済み・メールの書式の間違い・パスワードが5文字以下・空文字を指定した場合にもResistered Succesfullyというメッセージが出てしまいます。しかし、画面遷移はせず、エラーにはなっているようです。 適切なエラーメッセージを表示するにはどのように改めればよいか教えていただきたいです。 よろしくお願いします。

@IBAction func didTapSignup(_ sender: Any) {

signUp.isEnabled = false Auth.auth().createUser(withEmail: email.text!, password: password.text!, completion: { (user, error) in if(error == nil) { if(error!._code == 17999) { self.errorMessage.text = "Inavlid email Addless" } else { self.errorMessage.text = error?.localizedDescription } } else { self.errorMessage.text = "Resistered Succesfully" Auth.auth().signIn(withEmail: self.email.text!, password: self.password.text!, completion: { (user, error) in if (error == nil) { self.databaseRef.child("user_profiles").child(user!.user.uid).child("email").setValue(self.email.text!) self.performSegue(withIdentifier: "HandleViewSegue", sender: nil) } }) } }) }
swift

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

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

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

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

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

guest

回答1

0

ベストアンサー

if文の条件設定がおかしくないですか?

Swift

1 if (error == nil) { 2 // errorがない時 3 // なのに、error code == 17999の時の条件が。。。 4 } else { 5 // errorがある時 6 // なのにResistered Succesfullyと表示されるコードがありますが、、、 7 } 8

だと思います。printをうまく活用し
print("条件分岐:errorなし")とかprint("条件分岐:errorあり")とかして、
どこにどの時流れてるかを確認してみて、正しく流れるように修正をして見ましょう。

ちなみにメールアドレスが登録済み・メールの書式の間違いは
print("error codeは", error!._code, "です")を用いて
// error!._codeの書き方は正しいかの確認もしてください。
コード番号をゲットして、17999と同様に条件分岐or switchで記載を。

パスワードが5文字以下・空文字を指定した場合に関しては、textFieldDelegateの
textFieldDidEndEditingで5文字以下や空文字をチェックするようにすれば実現できると思います。

あ、その他にtextFieldにOutletを接続しているなら、このdidTapSignup内でもcheckできます。

投稿2018/06/07 16:03

編集2018/06/07 16:47
hameji

総合スコア1380

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

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

Megum

2018/06/13 13:50

返事が遅くなり申し訳ありませんでした。 大変丁寧に返信くださりありがとうございます。 かなり初歩的なところで間違っていたようで、お恥ずかしい限りです。 ご指摘いただいたとおり、修正頑張ります。 それと、たしかにtextDidEndEditingでもチェック機能を試してみます。 素人な質問に丁寧に答えていただき、ありがとうございました。 また、お世話になることもあるかもしれませんが何卒よろしくお願いします。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問