UISwitch Status 到 Firestore
UISwitch Status to Firestore
我目前正在构建一个用户创建机制,我有 8 个 UI 开关来确定某人是否对食物过敏。我为每个开关创建了一个@IBOutlet,现在将它们包含在文档中。我在添加文本字段时没有问题:
let db = Firestore.firestore()
db.collection("users").addDocument(data: ["firstname":firstname, "lastname":lastname, "username":username, ]
我想做的是扩展该语法以在用户创建时添加 8 UISwitch 的状态。
Firebase 和应用程序开发的新手,但尝试了谷歌搜索我能想到的一切。预先感谢您的帮助!
更新
好的,所以我一定还是在这里做错了什么,但我想我已经接近了:
import UIKit
import FirebaseAuth
import Firebase
class SignUpViewController: UIViewController {
@IBOutlet weak var firstNameTextField: UITextField!
@IBOutlet weak var lastNameTextField: UITextField!
@IBOutlet weak var usernameTextField: UITextField!
@IBOutlet weak var emailTextField: UITextField!
@IBOutlet weak var passwordTextField: UITextField!
@IBOutlet weak var milkSwitch: UISwitch!
@IBOutlet weak var peanutSwitch: UISwitch!
@IBOutlet weak var wheatSwitch: UISwitch!
@IBOutlet weak var treeNutSwitch: UISwitch!
@IBOutlet weak var fishSwitch: UISwitch!
@IBOutlet weak var shellFishSwitch: UISwitch!
@IBOutlet weak var eggSwitch: UISwitch!
@IBOutlet weak var soySwitch: UISwitch!
@IBOutlet weak var addAFamilyButton: UIButton!
@IBOutlet weak var signUpButton: UIButton!
@IBOutlet weak var errorLabel: UILabel!
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
setUpElements()
}
func setUpElements (){
errorLabel.alpha = 0
}
func showError(_ message:String) {
errorLabel.text = message
errorLabel.alpha = 1
}
//Check the fields and validate that data is correct.
func validateFields() -> String? {
//Check that all fields are filled in
if firstNameTextField.text?.trimmingCharacters(in: .whitespacesAndNewlines) == "" ||
lastNameTextField.text?.trimmingCharacters(in: .whitespacesAndNewlines) == "" ||
usernameTextField.text?.trimmingCharacters(in: .whitespacesAndNewlines) == "" ||
emailTextField.text?.trimmingCharacters(in: .whitespacesAndNewlines) == "" ||
passwordTextField.text?.trimmingCharacters(in: .whitespacesAndNewlines) == "" {
return "Please fill in all fields."
}
//Check if password is secure
let cleanedPassword = passwordTextField.text!.trimmingCharacters(in: .whitespacesAndNewlines)
if Utilities.isPasswordValid(cleanedPassword) == false {
// Password isn't secure enough
return "Please make sure your password is at least 8 characters, contains a special character and a number"
}
return nil
}
/*
// MARK: - Navigation
// In a storyboard-based application, you will often want to do a little preparation before navigation
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
// Get the new view controller using segue.destination.
// Pass the selected object to the new view controller.
}
*/
@IBAction func signUpTapped(_ sender: Any) {
// Validate the fields
let error = validateFields()
if error != nil {
// There's something wrong with the fields, show error message
showError(error!)
}
else {
// Cleaned Versions of the data
let firstname = firstNameTextField.text!.trimmingCharacters(in: .whitespacesAndNewlines)
let lastname = lastNameTextField.text!.trimmingCharacters(in: .whitespacesAndNewlines)
let email = emailTextField.text!.trimmingCharacters(in: .whitespacesAndNewlines)
let password = passwordTextField.text!.trimmingCharacters(in: .whitespacesAndNewlines)
let username = usernameTextField.text!.trimmingCharacters(in: .whitespacesAndNewlines)
let milk = milkSwitch
let peanut = peanutSwitch
let wheat = wheatSwitch
let treenut = treeNutSwitch
let fish = fishSwitch
let shellfish = shellFishSwitch
let egg = eggSwitch
let soy = soySwitch
// Create the user
Auth.auth().createUser(withEmail: email, password: password) { (result, err) in
// Check for errors
if err != nil {
//There was an error creating the user
self.showError("Error creating user")
}
else {
// User was created successfully
let db = Firestore.firestore()
db.collection("users").addDocument(data: ["firstname":firstname, "lastname":lastname, "username":username, "uid": result!.user.uid, "milk":milkSwitch.isOn, "peanut":peanutSwitch.isOn, "wheat":wheatSwitch.isOn, "treenut":treeNutSwitch.isOn, "fish":fishSwitch.isOn, "shellfish":shellFishSwitch.isOn, "egg":eggSwitch.isOn, "soy":soySwitch.isOn ]) { (error) in
if error != nil {
//Show error message
self.showError("Your allergies have not been saved. Please login to your account")
}
}
// Transiition to the home screen
}
}
}
}
您可以使用 isOn 获取 UISwitch
的状态
let peanutAllergySwitch = UISwitch()
let db = Firestore.firestore()
let data = [
"firstname":firstname,
"lastname":lastname,
"username":username,
"allergicToPeanuts": peanutAllergySwitch.isOn
]
db.collection("users").addDocument(data: data)
我目前正在构建一个用户创建机制,我有 8 个 UI 开关来确定某人是否对食物过敏。我为每个开关创建了一个@IBOutlet,现在将它们包含在文档中。我在添加文本字段时没有问题:
let db = Firestore.firestore()
db.collection("users").addDocument(data: ["firstname":firstname, "lastname":lastname, "username":username, ]
我想做的是扩展该语法以在用户创建时添加 8 UISwitch 的状态。
Firebase 和应用程序开发的新手,但尝试了谷歌搜索我能想到的一切。预先感谢您的帮助!
更新 好的,所以我一定还是在这里做错了什么,但我想我已经接近了:
import UIKit
import FirebaseAuth
import Firebase
class SignUpViewController: UIViewController {
@IBOutlet weak var firstNameTextField: UITextField!
@IBOutlet weak var lastNameTextField: UITextField!
@IBOutlet weak var usernameTextField: UITextField!
@IBOutlet weak var emailTextField: UITextField!
@IBOutlet weak var passwordTextField: UITextField!
@IBOutlet weak var milkSwitch: UISwitch!
@IBOutlet weak var peanutSwitch: UISwitch!
@IBOutlet weak var wheatSwitch: UISwitch!
@IBOutlet weak var treeNutSwitch: UISwitch!
@IBOutlet weak var fishSwitch: UISwitch!
@IBOutlet weak var shellFishSwitch: UISwitch!
@IBOutlet weak var eggSwitch: UISwitch!
@IBOutlet weak var soySwitch: UISwitch!
@IBOutlet weak var addAFamilyButton: UIButton!
@IBOutlet weak var signUpButton: UIButton!
@IBOutlet weak var errorLabel: UILabel!
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
setUpElements()
}
func setUpElements (){
errorLabel.alpha = 0
}
func showError(_ message:String) {
errorLabel.text = message
errorLabel.alpha = 1
}
//Check the fields and validate that data is correct.
func validateFields() -> String? {
//Check that all fields are filled in
if firstNameTextField.text?.trimmingCharacters(in: .whitespacesAndNewlines) == "" ||
lastNameTextField.text?.trimmingCharacters(in: .whitespacesAndNewlines) == "" ||
usernameTextField.text?.trimmingCharacters(in: .whitespacesAndNewlines) == "" ||
emailTextField.text?.trimmingCharacters(in: .whitespacesAndNewlines) == "" ||
passwordTextField.text?.trimmingCharacters(in: .whitespacesAndNewlines) == "" {
return "Please fill in all fields."
}
//Check if password is secure
let cleanedPassword = passwordTextField.text!.trimmingCharacters(in: .whitespacesAndNewlines)
if Utilities.isPasswordValid(cleanedPassword) == false {
// Password isn't secure enough
return "Please make sure your password is at least 8 characters, contains a special character and a number"
}
return nil
}
/*
// MARK: - Navigation
// In a storyboard-based application, you will often want to do a little preparation before navigation
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
// Get the new view controller using segue.destination.
// Pass the selected object to the new view controller.
}
*/
@IBAction func signUpTapped(_ sender: Any) {
// Validate the fields
let error = validateFields()
if error != nil {
// There's something wrong with the fields, show error message
showError(error!)
}
else {
// Cleaned Versions of the data
let firstname = firstNameTextField.text!.trimmingCharacters(in: .whitespacesAndNewlines)
let lastname = lastNameTextField.text!.trimmingCharacters(in: .whitespacesAndNewlines)
let email = emailTextField.text!.trimmingCharacters(in: .whitespacesAndNewlines)
let password = passwordTextField.text!.trimmingCharacters(in: .whitespacesAndNewlines)
let username = usernameTextField.text!.trimmingCharacters(in: .whitespacesAndNewlines)
let milk = milkSwitch
let peanut = peanutSwitch
let wheat = wheatSwitch
let treenut = treeNutSwitch
let fish = fishSwitch
let shellfish = shellFishSwitch
let egg = eggSwitch
let soy = soySwitch
// Create the user
Auth.auth().createUser(withEmail: email, password: password) { (result, err) in
// Check for errors
if err != nil {
//There was an error creating the user
self.showError("Error creating user")
}
else {
// User was created successfully
let db = Firestore.firestore()
db.collection("users").addDocument(data: ["firstname":firstname, "lastname":lastname, "username":username, "uid": result!.user.uid, "milk":milkSwitch.isOn, "peanut":peanutSwitch.isOn, "wheat":wheatSwitch.isOn, "treenut":treeNutSwitch.isOn, "fish":fishSwitch.isOn, "shellfish":shellFishSwitch.isOn, "egg":eggSwitch.isOn, "soy":soySwitch.isOn ]) { (error) in
if error != nil {
//Show error message
self.showError("Your allergies have not been saved. Please login to your account")
}
}
// Transiition to the home screen
}
}
}
}
您可以使用 isOn 获取 UISwitch
let peanutAllergySwitch = UISwitch()
let db = Firestore.firestore()
let data = [
"firstname":firstname,
"lastname":lastname,
"username":username,
"allergicToPeanuts": peanutAllergySwitch.isOn
]
db.collection("users").addDocument(data: data)