前提・実現したいこと
時間割を共有できるアプリを作成しています
初めてログインする際にログイン画面が表示され、FireBaseを用いてユーザーネーム、学部、学年を登録できるようにしました
ここで登録した情報を後から変更するために、設定画面を作成したのですが、その画面にある3つのテキストフィールドに、現在登録してある情報をあらかじめ表示しておきたいです
発生している問題・エラーメッセージ
上記のログイン画面のテキストフィールドの文字をfirebaseの保存->設定画面のテキストフィールドに表示 とできない
エラーメッセージ
該当のソースコード
swift
1 2// LoginViewController 3 4 5import UIKit 6import Firebase 7import SVProgressHUD 8 9 10class LoginViewController: UIViewController { 11 12 @IBOutlet weak var displayNameTextField: UITextField! 13 @IBOutlet weak var mailAddressTextField: UITextField! 14 @IBOutlet weak var passwardTextField: UITextField! 15 @IBOutlet weak var facultyTextField: UITextField! 16 @IBOutlet weak var gradeTextField: UITextField! 17 18 19 // ログインボタンとの接続 20 @IBAction func hundleLoginButton(_ sender: Any) { 21 if let address = mailAddressTextField.text, let password = passwardTextField.text, let displayname = displayNameTextField.text, let faculty = facultyTextField.text, let grade = gradeTextField.text { 22 23 if address.isEmpty || password.isEmpty || displayname.isEmpty || faculty.isEmpty || grade.isEmpty { 24 SVProgressHUD.showError(withStatus: "必要項目を入力してください") 25 return 26 } 27 28 // HUDで処理中を表示 29 SVProgressHUD.show() 30 31 Auth.auth().signIn(withEmail: address, password: password) { authResult, error in 32 if let error = error { 33 print("DEBUG_PRINT: " + error.localizedDescription) 34 return 35 } 36 print("DEBUG_PRINT: ログインに成功しました。") 37 38 // HUDを消す 39 SVProgressHUD.dismiss() 40 41 // 画面を閉じてタブ画面に戻る 42 self.dismiss(animated: true, completion: nil) 43 } 44 45 } 46 } 47 48 49 // アカウント作成ボタンとの接続 50 @IBAction func hundleAccountCreateButton(_ sender: Any) { 51 52 if let address = mailAddressTextField.text, let password = passwardTextField.text, let displayName = displayNameTextField.text, let faculty = facultyTextField.text, let grade = gradeTextField.text { 53 54// 空欄がある時 55 if address.isEmpty || password.isEmpty || displayName.isEmpty || faculty.isEmpty || grade.isEmpty { 56 print("DEBUG_PRINT: 何かが空文字です") 57 SVProgressHUD.showError(withStatus: "必要項目を入力してください") 58 return 59 } 60 61// HUDで処理中を表示 62 SVProgressHUD.show() 63 64// アドレスとパスワードでユーザー作成 65 Auth.auth().createUser(withEmail: address, password: password) { authResult, error in 66 if let error = error { 67// エラーがあったら原因をプリントする 68 print("DEBUG_PRINT:" + error.localizedDescription) 69 SVProgressHUD.showError(withStatus: "ユーザー作成に失敗しました") 70 return 71 } 72 print("DEBUG_PRINT: ユーザー作成に成功しました") 73 74// プロフィールを保存 75 let userRef = Firestore.firestore().collection(Const.ProfilePath).document() 76 let userDic = [ 77 "name": displayName, 78 "faculty": faculty, 79 "grade": grade 80 ] as [String : Any] 81 userRef.setData(userDic) 82 SVProgressHUD.dismiss() 83 84// 画面を閉じる 85 self.dismiss(animated: true, completion: nil) 86 } 87 } 88 } 89 90 91 92 93 override func viewDidLoad() { 94 super.viewDidLoad() 95 } 96 97 98 99} 100
// SettingViewController import UIKit import Firebase import SVProgressHUD import FirebaseUI class SettingViewController: UIViewController { @IBOutlet weak var displayNameTextField: UITextField! @IBOutlet weak var facultyTextField: UITextField! @IBOutlet weak var gradeTextField: UITextField! // 変更ボタンとの接続 @IBAction func hundleChangeButton(_ sender: Any) { // いずれかの項目が空の時はHUDを出してなにもしない if let displayName = displayNameTextField.text, let faculty = facultyTextField.text, let grade = gradeTextField.text { // 項目が空の時 if displayName.isEmpty || faculty.isEmpty || grade.isEmpty { SVProgressHUD.showError(withStatus: "空の項目があります") return } } } @IBAction func hundleLogoutButton(_ sender: Any) { // ログアウトする try! Auth.auth().signOut() // ログイン画面を表示 let loginViewController = self.storyboard?.instantiateViewController(withIdentifier: "Login") self.present(loginViewController!,animated: true, completion: nil) // ホームボタンを選択した状態にする tabBarController?.selectedIndex = 0 } override func viewWillAppear(_ animated: Bool) { super.viewWillAppear(animated) } }
// PstData.swift(登録データを格納するクラス) import UIKit import Firebase class PostData: NSObject { var id: String var name: String? var faculty: String? var grade: String? var lessonName: String? var lessonCode: String? init(document: QueryDocumentSnapshot) { self.id = document.documentID let userDic = document.data() self.name = userDic["name"] as? String self.faculty = userDic["faculty"] as? String self.grade = userDic["grade"] as? String self.lessonName = userDic["lessonName"] as? String self.lessonCode = userDic["lessonCode"] as? String } }
// Const.swift(FireBase関連の定数) // // Const.swift // College3 // // Created by Apple on 2020/03/29. // Copyright © 2020 ryotaro.tsuji. All rights reserved. // import Foundation struct Const { static let ImagePath = "images" static let ProfilePath = "profile" static let LessonPath = "lesson" }
試したこと
補足情報(FW/ツールのバージョンなど)
xcode11.4を使用
あなたの回答
tips
プレビュー