2017-11-20 11 views
0

このエラーは、オプションを印刷しようとしたときに発生したと考えました。私は印刷コマンドを削除しましたが、私はまだ警告を受け取ります。私は自分のコードをスクリーンショットしました(添付の参照)。私はfirebaseを使用して愛するためのユーザープロファイルを作成しています。事前にお手伝いいただきありがとうございます。「String」から暗黙的に強制的に式が強制されますか?オプションで印刷しない

コード:

func createProfile(_ user: User) { 
    let newUser = ["email": user.email, 
        "photo": "https://firebasestorage.googleapis.com/v0/b/frostingtest.appspot.com/o/ricks.jpg? 
        alt=media&token=d1f266e0-32aa-465d-bc42-82fdbe84881b"] 

    self.databaseRef.child("profile").child(user.uid).updateChildValues(newuser) { (error, ref) in 
     if error != nil { 
      print(error) 
      return 
     } 
     print("Profile Created Sucessfully") 
    } 
} 

答えて

0

コンパイラはあなたがnewUserがfirebaseドキュメンテーションからString?とあなたの関数updateChildValuesがあるされていることを言っている:func updateChildValues(_ values: [AnyHashable : Any])

あなたにあなたのNEWUSER変数の型を印刷することができますコンソールログ?

+0

私は仕事のために出発しなければなりませんでした。残念ながら、私がMacの前に戻ってくるまでには数時間かかるでしょう。私が戻ったときに私は見てみましょう。だから私は古いコードを使用しているように見えます。ありがとうございました。 – PsYcHoSiD

+0

コンパイラは、あなたの 'newUser'がString?*であると言うのではなく*** Expression **暗黙的に強制しています...と言います。つまり、オブジェクトにオプションの値が1つあります(キー明らかに非選択的です)。 – vadian

0

まずはこれはエラーではなく、という警告です。

明示的に警告がnewUserに発生した場合、唯一可能性のある理由は、辞書内のuser.emailはオプションです。あなたが意図したよう["email": user.email as Any,...

["email": user.email!,...明示的Anyにキャスト

  • ["email": user.email ?? "",...
  • 値を強制-アンラップ:

    コンパイラは、以下の修正

    1. はデフォルト値を割り当て示唆します電子メールを変更すると、user.emailnilではないとみなすことができます提案2が適切です。仮説が間違っている場合は、辞書のnil値が無意味なので、提案1が適切です。

      は残念ながら対応Fixボタンをクリックすると(実際の赤)エラーが発生する可能性が誤解を招くnewUserへの提案に適用されます。手動でuser.emailに提案を適用する必要があります。

  • +0

    ありがとう!私は家に帰るときにこれを試してみましょう。 – PsYcHoSiD

    +0

    これは正しい解決策です。 – DoesData

    関連する問題