0

基本上我想在函数(类SignUpPage.swift)中使用变量'userID'来将它称为HERE它在ViewController.swift类中。如何在类B中的类A的函数体内访问变量的值?

我曾试图使用户ID全局变量

ref.child( “用户”)子(这里).setValue。([userLN “名”:userFN, “姓”])也是,但这是不行的。 这里是整个代码:

class SignUpPage: UIViewController { 

var ref: FIRDatabaseReference! 

override func viewDidLoad() { 
    super.viewDidLoad() 

    ref = FIRDatabase.database().reference() 

} 

override func didReceiveMemoryWarning() { 
    super.didReceiveMemoryWarning() 
} 
@IBOutlet weak var emailField: UITextField! 
@IBOutlet weak var passwordField: UITextField! 



@IBAction func signUpButton(_ sender: Any) { 


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


     if error != nil{ 

      print(error!.localizedDescription) 
     } 

我想在ViewController.swift类中使用这个变量(用户ID),这样我可以节省名字,姓氏,EMAILID和密码相同令牌下。

 let userID = user!.uid 

     let userEmail = self.emailField.text! 
     let userPassword = self.passwordField.text! 

     self.ref.child("Users").child(userID).setValue(["User Email": userEmail, "User Password": userPassword]) 
    }) 

} 

}

ViewController.swift类

class ViewController: UIViewController { 

var ref: FIRDatabaseReference! 

var ID = String() 

override func viewDidLoad() { 
    super.viewDidLoad() 

    ref = FIRDatabase.database().reference() 

} 

override func didReceiveMemoryWarning() { 
    super.didReceiveMemoryWarning() 
    // Dispose of any resources that can be recreated. 
} 
@IBOutlet weak var fnField: UITextField! 
@IBOutlet weak var lnField: UITextField! 

@IBAction func nextButton(_ sender: Any) { 



    let userFN: String = fnField.text! 
    let userLN: String = lnField.text! 

    ref.child("Users").child(**HERE**).setValue(["First Name": userFN, "Last Name": userLN]) 

} 

}

+1

你是如何从注册的ViewController呈现视图控制器? –

+0

看起来像'child()'接受一个字符串。 'userID'的类型是什么? –

+0

@gkchristopher是啊,孩子()接受一个字符串 用户ID为String类型也 我遇到的问题是在访问它的类 –

回答

0

据我所知,这是基本身份验证逻辑,那么你为什么不保存用户id在UserDefaults,

let userID = user!.uid 
let userDefaults = UserDefaults.standard 
userDefaults.set(userID, forKey: "userID") 

比任何地方,当你想存储的用户ID,

let userDefaults = UserDefaults.standard 
let userID = userDefaults.string(forKey: "userID") 
ref.child("Users").child(userID).setValue(["First Name": userFN, "Last Name": userLN]) 
+0

它给出了这一行的错误 let userID = userDefault.string(forKey:“userID”)!作为字符串 错误读取 EXC_BAD_INSTRUCTION(code = EXC_I368_INVOP,subcode = 0x0) –

+0

应该让userID = userDefault.string(forKey:“userID”)as!字符串 – ocanal

+0

我试过,但它给出了一个错误,说 - 从'字符串?'downcast。 to String只展开optionals –

相关问题