2017-11-22 7 views
0

を持つすべてのプロパティにもかかわらず、「オプションの値をアンラップしながら、予期せずnilを見つけ」。私は現在データベース用にFirebaseを使用しています。は、私は私の最初のスウィフト/ iOSアプリケーションを構築していた値

fatal error: unexpectedly found nil while unwrapping an Optional value 

私はオブジェクトを見て、すべてのプロパティ:

私はサインアップフォームに記入した後、登録ボタンを押すときに、私は次のエラーが表示されイライラ問題に直面してきましたその価値を持っているようだ。 Firebaseのサインアップ機能は以下の通りです。

登録手続きは現在、ストーリーボードではなくプログラム的に行われています。ここで私は最終的に私のhandleRegister()関数を呼び出すボタンは、次のとおりです。

// REGISTER BUTTON 
    let registerButton: UIButton = { 
     let button = UIButton(type: UIButtonType.system) 
     button.isHidden = true 
     button.isEnabled = false 
     button.backgroundColor = UIColor.red 
     button.setTitle("Register", for: UIControlState.normal) 
     button.setTitleColor(.white, for: UIControlState.normal) 
     button.titleLabel?.font = UIFont(name: "Futura", size: 16) 
     button.layer.cornerRadius = 5 
     button.clipsToBounds = true 
     button.translatesAutoresizingMaskIntoConstraints = false 

     button.addTarget(self, action: #selector(handleRegister), for: .touchUpInside) 
     button.addTarget(self, action: #selector(toAppFeed), for: UIControlEvents.touchUpInside) 


     return button 
    }() 

ここで私は私のコンソールに次の左側のペインに表示されるものされています。 enter image description here

私はそれを見るだけの事がnilでありますFirebaseが何も投げていないので、私は想像していないエラーです。それでも、Firebaseに投稿しているのはオブジェクトにはありません。私はFirebaseを確認したときに、私は私が作成したすべてのユーザーを参照してくださいすることを言及する必要があり、私はhandleRegister()関数から収集していたユーザデータのしかしどれもデータベースに保存されません。

私は今、数ヶ月のためにFirebaseに取り組んできましたし、前にこの問題に直面していません。私は他のSOの質問を見てきましたが、この特定の問題を解決するものはありません。私はこの時点で考えることができる唯一のことは、何かがhandleRegister()が呼び出されたときはnilまだあり、その後値を得ることです。確信はないけど。この上

すべてのヘルプは非常に高く評価します。

EDIT - 「サインアップ」のフォームに記入した後、押した後にエラーが表示さところです: enter image description here

+3

エラーが発生した行はありますか。 – Connor

+0

'UserAccountDict.updateValue(AnyObjectとしてのuserAccount.userId、forKey:" userId ")'の代わりに、Swiftの辞書構文を使用する必要があります: 'userAccountDict [" userId "] = userAccount.userId'何がクラッシュを引き起こしているのですか? – Connor

+0

handle非同期メソッドであることを登録してください。完了ハンドラを使用する必要があります –

答えて

0
は、

何かが実際に力がアンラップされていた、しかし、それは私の変数のどれもなかったです。

Firebase参照が最初にself.ref.childで

ref: DatabaseReference! 

として設定され、refは必要?

もちろん
self.ref?.child 

、コンソールがあまりにもよく、そのすべて明らかにしませんでした。だからrefは強制的に展開されていませんでした。私はhandleRegister()関数でそれを使用したときにそれが存在することを確認することはしていませんでした。

また、viewDidLoad()でFirebaseリファレンスをインスタンス化するのを忘れてしまった。

-1

あなたがキーを参照して辞書に値を代入しようとしている、しかし、これらのキーがありますまだ利用可能ではありません。それが問題です。

ここソリューション するvar userAccountDict = [文字列:任意]です()

userAccountDict [ "はuserId"] = userAccount.userId のように...

幸運:)

+0

それはそれをクラッシュさせる原因ですが、キーが利用できず、彼はそのキーの値を更新しようとしています。 –

+0

新しいユーザーを作成するときに他のテストプロジェクトでこのメソッドを使用していたので、それは変わっていました。私はそれを撃つだろう。おかげで – sharedev

+0

ちょうど試みた - 残念ながら働かなかった:/ – sharedev

関連する問題