2017-10-19 41 views
0

我是新來的swift,我試圖使用多個視圖製作註冊表單。問題是,在調用Auth.auth()。currentUser?.uid 後,我在每個視圖中得到不同的字符串,無法繼續在一個特定的UID上工作。我究竟做錯了什麼?Firebase在每個視圖中修改uid

我使用的火力功能的createUser爲使創建用戶:

Auth.auth().createUser(withEmail: emailField.text!, password: 
passField.text!, completion: { (user, error) in 
      if let error = error { 
       print(error) 
      } 
      if let user = user { 
       let userInfo: [String : Any] = ["uid": UserModel().getUID(), 
               "username": self.usernameField.text!, "avatar_icon" : ""] 
       self.ref.child("users").child(user.uid).setValue(userInfo) 
      } 
     }) 

我試圖創建一個擁有模型類特定字符串,但得到同樣糟糕的結果。

import Foundation 
import Firebase 

class UserModel { 
    var userID : String 

    init() { 
     self.userID = (Auth.auth().currentUser?.uid)! 
    } 

    func getUID() -> String { 
     return self.userID 
    } 

} 

我的第一個符號的放大視圖控制器Register1ViewController,其中I調用UserModel.init(),得到了與UID的usermodel ()。的getuid()在未來視圖控制器。

+1

歡迎來到StackOverflow!請更新您的問題,以包含註冊視圖的代碼。包括重現問題所需的最少量的完整代碼。請參閱[this](https://stackoverflow.com/help/mcve)鏈接以瞭解更多信息。 –

回答

0

在firebase上,每個經過身份驗證的用戶都只有一個「唯一」uID,如您所知。所以當你以用戶身份登錄時,你應該在查詢時總是使用相同的uID。這裏很難說這是因爲你提供了這個代碼的一小部分。你應該提供更多的答案。

編輯: 看起來您每次開始活動時都會調用createuser。這意味着您每次運行代碼時都會創建另一個用戶。而

Auth.auth()。currentUser?.uid

回報你不同的UID。您應該註冊一次並在其他時間登錄。你可以查看下面的教程。但不要只看片段,打開github代碼。

https://www.appcoda.com/firebase-login-signup/

+0

我的整個代碼與這個問題無關,在每個視圖中調用公共的:Auth.auth()。currentUser?.uid返回一個不同的字符串。我已經編輯了我的帖子並添加了createUser函數,就像我用過的一樣。謝謝你的建議 :) –