2017-06-08 4 views
0

私は3つのtextFieldsを持っています。ユーザが情報を入力すると、その情報はFirebaseに送られます。すべてのテキストフィールドをファイアベースに更新しない

 func buttonMethod() { 
if let uid = FIRAuth.auth()?.currentUser?.uid{ 
      if let City = City.text{ 
       if let Major = Major.text{ 
        if let College = College.text{ 

         let saveObject: Dictionary<String, Any> = [ 
          "uid": uid, 
          "City" : City, 
          "Major" : Major, 
          "College" : College 
         ] 
        } 
       } 
      } 
     } 



FIRDatabase.database().reference().child("info").child(self.loggedInUser!.uid).setValue(saveObject) 

これらを使用して、ユーザーは情報を編集できます。また、情報は別のView Controllerのラベルに表示されます。

func loadInfo(){ 
     if (FIRAuth.auth()?.currentUser) != nil{ 

      FIRDatabase.database().reference().child("info").child(self.loggedInUser!.uid).observeSingleEvent(of: .value, with: { (snapshot:FIRDataSnapshot) in 


       if let postsDictionary = snapshot .value as? [String: AnyObject] { 
        for post in postsDictionary { 
         //self.posts.add(post.value) 

         let city = postsDictionary["City"] as! String 
         let major = postsDictionary["Major"] as! String 
         let college = postsDictionary["College"] as! String 
         self.City.text = city 
         self.Major.text = major 
         self.College.text = college 
        } 

       }})} 
    } 

私の問題は、ユーザーが情報を編集するときtextFieldが編集されていなかった場合、それは空の文字列でFirebaseで非編集したtextFieldの値を置き換えることです。

if City.tex t== "" { 

} 
if Major.text=="" { 

} 
if College.text==""{ 

} 

しかし、私はどこそこから行くのか分からない。私はそれは、ユーザーがtextFieldが、その後Firebaseの値が滞在する必要が編集していない場合same.Iはこれで始まったということにしたいです。

+0

firebaseからのこの値は、 'textField'の値を表示しています –

+0

残念です、別のビューコントローラのラベルに値を表示しています@NiravD – juelizabeth

+0

次に、' textField'テキストをfirebaseデータに設定しないのはなぜですか? –

答えて

0

テキストフィールドのテキストが空の場合、そのフィールドをfirebaseに送信しないでください。ユーザーが市区町村を編集していないとしたら、市区町村のtextFieldをfirebaseに値を送るメソッドに追加しないでください。

更新してみてください、あなたのこのようなbuttonMethod()

func buttonMethod() { 
    if let uid = FIRAuth.auth()?.currentUser?.uid{ 

     var tempObject = [String:Any]() 
     tempObject["uid"] = uid 
     if !City.text.isEmpty { 
      tempObject["City"] = City.text 
     } 

     if !Major.text.isEmpty{ 
      tempObject["Major"] = Major.text 
     } 

     if !College.text.isEmpty{ 
      tempObject["College"] = College.text 
     } 

     let saveObject:Dictionary<String,Any> = tempObject 

} 

代わりfirebase更新にオブジェクトを保存するのでfirebaseのデータが​​機能を使用して

あなたが取得も辞書をループする必要はありません
+0

私はそのロジックを理解しています。私はそれをする方法がわかりません – juelizabeth

+0

これらの値をファイアベースに送る方法を教えてください –

+0

これは最初のコードチャックです。質問に含まれています – juelizabeth

関連する問題