2017-09-23 130 views
3
var img: UIImage! 

if self.profileImg.image == #imageLiteral(resourceName: "add_image"){ 
    img = #imageLiteral(resourceName: "add_image") 
}else{ 
    img = self.profileImg.image 
} 

if let imgData = UIImageJPEGRepresentation(img, 0.2){ 
    print(imgData) 
    let imageUid = NSUUID().uuidString 
    print(imageUid) 
    let metaData = StorageMetadata() 
    print(metaData) 
    metaData.contentType = "image/jpeg" 

    DataService.ds.REF_PROFILE_IMAGES.child(imageUid).putData(imgData, metadata: metaData, completion: { (metadata, error) in 
     if error != nil { 
      print ("ADAM: UNABLE TO UPLOAD IMAGE TO FIREBASE STORAGE") 
     }else{ 
      print ("ADAM: SUCCESSFULLY UPLOADED PROFILE IMAGE ") 
      self.downloadURL = metaData.downloadURL()?.absoluteString 


     } 
    }) 
}else{ 
    print("ADAM: SUMTING WONG") 
} 

Auth.auth().createUser(withEmail: emailField.text!, password: passwordField.text!) { (user, error) in 

    if error == nil { 
     print("ADAM: You have successfully signed up") 

     // saving the image to storage and link to database 

     let firstName = self.firstNameField.text 
     let lastName = self.LastNameField.text 
     let userName = self.usernameField.text 
     let profileImageUrl = self.downloadURL 
     print(profileImageUrl) 
     let userData = ["provider" : user!.providerID, "FirstName": firstName, "LastName": lastName, "username": userName, "profileImageURL": profileImageUrl] 

     self.completeSignIn(id: user!.uid, userData: userData as! Dictionary<String, String>) 

配置文件圖像URL重複返回零,因此不會允許我運行登錄功能。當我調試時,我可以看到Dataservice方法被跳過,我不明白爲什麼:/嘗試將圖片上傳到Firebase存儲但未執行?

+1

你看到爲零,因爲'putData'是一個異步調用,所以你需要可以調用'createUser'方法裏面'putData'關閉或使用完成處理程序,你可以檢查此:https://stackoverflow.com/questions/46356012/firebase-one-of-two-observers-not-working/46356267#46356267 – 3stud1ant3

+0

@ 3stud1ant3我試過在putData完成處理程序中創建用戶,但仍然沒有運氣 – KONADO

回答

2

我正在使用它創建用戶並將用戶信息存儲在Firebase數據庫和映像存儲中。

func registerUser(withName: String, email: String, password: String, profilePic: UIImage, completion: @escaping (Bool) -> Swift.Void) { 
     Auth.auth()?.createUser(withEmail: email, password: password, completion: { (user, error) in 
      if error == nil { 
       user?.sendEmailVerification(completion: nil) 
       let storageRef = FIRStorage.storage().reference().child("usersProfilePics").child(user!.uid) 
       let imageData = UIImageJPEGRepresentation(profilePic, 0.1) 
       storageRef.putData(imageData!, metadata: nil, completion: { (metadata, err) in 
        if err == nil { 
         let path = metadata?.downloadURL()?.absoluteString 
         let values = ["name": withName, "email": email, "profilePicLink": path!] 
         FIRDatabase.database().reference().child("users").child((user?.uid)!).child("credentials").updateChildValues(values, withCompletionBlock: { (errr, _) in 
          if errr == nil { 
           let userInfo = ["email" : email, "password" : password] 
           UserDefaults.standard.set(userInfo, forKey: "userInformation") 
           completion(true) 
          } 
         }) 
        } 
       }) 
      } 
      else { 
       completion(false) 
      } 
     }) 
    } 
相關問題