質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

Q&A

解決済

1回答

1061閲覧

Thread 1: Fatal error: Unexpectedly found nil while unwrapping an Optional valueにつまづいております

Marcos

総合スコア18

iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

0グッド

0クリップ

投稿2019/06/30 03:55

前提・実現したいこと

画面遷移の際に、前画面(loginViewController)のvar name: UITextField!に入力した値を遷移先(HomeViewController)のvar homeName: TextField!に持っていきたいです。

発生している問題・エラーメッセージ

Thread 1: Fatal error: Unexpectedly found nil while unwrapping an Optional value

該当のソースコード

import UIKit import Firebase class LoginViewController: UIViewController { //MARK: Properties @IBOutlet weak var name: UITextField! @IBOutlet weak var email: UITextField! @IBOutlet weak var password: UITextField! override func viewDidLoad() { super.viewDidLoad() } @IBAction func loginAcrtion(_ sender: UIButton) { Auth.auth().signIn(withEmail: email.text!, password: password.text!){ (user, error) in if error == nil{ self.performSegue(withIdentifier: "loginToHome", sender: self) } else{ let alertController = UIAlertController(title: "Error", message: error?.localizedDescription, preferredStyle: .alert) let defaultAction = UIAlertAction(title: "OK", style: .cancel, handler: nil) alertController.addAction(defaultAction) self.present(alertController, animated: true, completion: nil) } } } override func prepare(for segue: UIStoryboardSegue, sender: Any?){ if segue.identifier == "loginToHome" { let homevc = segue.destination as! HomeViewController if name != nil { homevc.homeName.text = name.text //ここでエラーが発生します } else { print("名前がありません") } } } }

試したこと

var nameをunwrappするコードを入れましたが、nameがnilの場合に発生するprint("名前がありません")もコンソールに出てこないので、どこに原因があるのかが分からなくあります。

補足情報(FW/ツールのバージョンなど)

初心者にて恐縮ですが、ご回答頂けますと幸いです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

遷移先に

swift

1var name: string! 2 3override func viewWillAppear(_ animated: Bool) { 4 super.viewWillAppear(animated) 5 6 homeName.text = name 7 } 8

遷移元のhomevc.homeName.text = name.text //ここでエラーが発生します
の部分を

swift

1homevc.name = name.text

としてみてください。
(未確認)

viewcontrollerのライフサイクルというものを勉強してみると原因が理解できると思います。

投稿2019/06/30 12:08

fathy

総合スコア254

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Marcos

2019/06/30 12:16

fathy000様、 早速ご回答いただきありがとうございます、解決されました。 ご教示頂いたライフサイクルを学習いたします。 また宜しくお願いいたします。
fathy

2019/06/30 12:21

よかったです。 がんばってください!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問