2017-10-19 6 views
0

私のコードに何か問題があると思われますが、私がここで間違っていることを特定することはできません。この行のエラーは、私のsignUp関数内にあるself.setUserInfo(firstLastName: firstLastName, user: user, username: username, location: location, biography: biography, password: password, pictureData: pictureData)です。タイプ「User?」の値を変換できません。期待される引数型 'User!'

タイプ 'User'の値を変換できません。期待される引数型 'User!' あなたが使用してユーザー・パラメータの開封された値を設定したsetUserInfo方法でenter image description here

func signUP(firstLastName: String, username: String, email: String, location: String, biography: String, password: String, pictureData: NSData!) { 

    Auth.auth().createUser(withEmail: email, password: password) { (user, error) in 
     if error == nil{ 

      self.setUserInfo(firstLastName: firstLastName, user: user, username: username, location: location, biography: biography, password: password, pictureData: pictureData) 

     }else{ 
      print(error?.localizedDescription) 
     } 
    } 


} 

private func setUserInfo(firstLastName: String, user: User!, username: String, location: String, biography: String, password: String, pictureData: NSData!){ 

    let imagePath = "profileImage\(user.uid)/userPic.jpg" 
    let imageRef = storageRef.child(imagePath) 

let metaData = StorageMetadata() 
    metaData.contentType = "image/jpeg" 
    imageRef.putData(pictureData as Data, metadata: metaData){(newMetaData, error) 
     in 
     if error == nil{ 
      let changeRequest = User.createProfileChangeRequest() 
      changeRequest.displayName = username 
      if let photoURL = newMetaData!.downloadURL(){ 
       changeRequest.photoURL = photoURL 

      } 
      changeRequest.commitChanges(completion: { (error) in 
       if error == nil{ 

        self.saveUserInfo(firstLastName: firstLastName, user: user, username: username, location: location, biography: biography, password: password) 

        print("user info set") 

       }else{ 
        print(error?.localizedDescription) 
       } 
      }) 

     }else{ 
      print(error?.localizedDescription) 
     } 

    } 

} 
+0

ショーの実装:'メソッド – D4ttatraya

+0

自分のUserクラスを見て何これは、これがもたらしたユーザーパラメータ – Torewin

答えて

-1

「!」が、あなたのAUTHインチ完了ブロックでは、その値はオプションであると思われます。ここで

は、あなたがそれを解決する方法である。

Auth.auth().createUser(withEmail: email, password: password) { [weak self] (user, error) in 

    guard let unwrappedError = error, 
      let unwrappedUser = user, 
      let strongSelf = self 
    else { 
     print(error?.localizedDescription) 
     return 
    } 

    strongSelf.setUserInfo(firstLastName: firstLastName, user: unwrappedUser, username: username, location: location, biography: biography, password: password, pictureData: pictureData) 
} 

EDIT:あなたはここで明示的に自己を維持したので、私は(Aいいえいいえネットワークのコールバック閉鎖中!)、strongSelfパターンを追加し、ガード文を使用し、このシナリオで妥当性チェックを処理するには、あなたの意図がより明確になるため、ガード・ステートメントが推奨されます。 。Auth.auth()のcreateUser(withEmail `の

+0

のように「!」? (画像提供) – user8000557

+0

削除setUserInfoからを与える – Woof

+0

を宣言した後、私に同じエラー – user8000557

関連する問題