有没有办法刷新配置文件而无需重新启动应用程序?

时间:2017-07-18 19:34:13

标签: ios firebase swift3 firebase-authentication

我正在尝试使用firebase编辑用户个人资料,当用户转到他们的个人资料时,会有一个编辑按钮,将他们带到新的viewcontroller来编辑他们的个人资料。我尝试下面的代码只有在我注销并重新登录时才有效。有没有办法刷新用户配置文件而无需重新启动我的应用程序?感谢。

 //  EditprofleVC.swift
 import UIKit
 import Firebase
 import FirebaseAuth
 import FirebaseStorage
 import FirebaseDatabase

class EditprofleVC: UIViewController{

var storageRef: StorageReference!
var databaseRef: DatabaseReference!

@IBOutlet weak var userNameTxt: UITextField!
@IBOutlet weak var profileImageView: UIImageView!

override func viewDidLoad() {
    super.viewDidLoad()

   storageRef = Storage.storage().reference()
   databaseRef = Database.database().reference()
}

@IBAction func saveProfileData(_ sender: Any) {
    updateUsersProfile()
}

func updateUsersProfile(){

    if let userID = Auth.auth().currentUser?.uid {
        let storageItem = storageRef.child("urlToImage").child(userID)

        guard let image = profileImageView.image else
        {return}

        if let newImage = UIImagePNGRepresentation(image) {

            storageItem.putData (newImage,metadata:nil,completion: { (metadata,error) in

                if error != nil {
                    print (error)
                    return
                }

                storageItem.downloadURL(completion:{ (url,error) in

                    if error != nil {
                        print (error!)
                        return
                    }

                    if let profilePhototoURL = url?.absoluteString{

                        guard let newUserName = self.userNameTxt.text else {return}

                        let newValuesForProfile =
                        ["urlToImage": profilePhototoURL,
                         "full name": newUserName]

                        self.databaseRef.child ("users").child(userID).updateChildValues(newValuesForProfile,withCompletionBlock: { (error, ref) in
                          if error != nil {
                            print (error!)
                            return
                          }

                          print (" profile successfully upated" )
                      })    
                    }
               })
        })
    }
}     
}
}

class profileVC:UIViewController {

    var user = [User]()

    var userID: String!

    @IBOutlet weak var profileNameLbl: UILabel!
    @IBOutlet weak var businessType: UILabel!


@IBOutlet weak var profileImage: UIImageView!


let storageRef = Storage.storage().reference()

let databaseRef = Database.database().reference()




override func viewDidLoad() {
    super.viewDidLoad()


 setupProfile()


}

func setupProfile() {



    let uid = Auth.auth().currentUser?.uid

    databaseRef.child("users").child(uid!).observeSingleEvent(of: .value, with: { (snapshot) in



        if let dict = snapshot.value as? [String: AnyObject]

        {
            self.profileNameLbl.text = dict["full name"] as? String
            self.businessType.text = dict["Business Type"] as? String

            if let profileImageurl = dict["urlToImage"] as? String

            {

                let url = URL(string: profileImageurl)
                URLSession.shared.dataTask(with: url!, completionHandler: { (data, responds, error) in

                    if error != nil{

                        print(error!)
                        return

                    }
                    DispatchQueue.main.async{

                        self.profileImage?.image = UIImage(data: data!)
                    }
                }).resume()



                    }


            }


    })



}

}

0 个答案:

没有答案