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

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

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

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

Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

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

Q&A

解決済

1回答

374閲覧

Swift protocolを使用した値渡しの際の”Unexpectedly found nil while implicitly unwrapping an Optional value”

mogiruri

総合スコア37

iOS

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

Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

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

0グッド

0クリップ

投稿2019/04/23 06:50

こんにちは。

apiを使って、saerchBarで検索した内容をtableViewに表示するというものを作成しています。
アーキテクチャはMVPで開発しており、プロトコルを使用してsaerchBarで取得した文字列をpresenterのfuncへ渡したいのですが found nilのエラーが出てしまいます。

参考にしているコードがあるのですが、searchBarから取得してpresenterのfuncへ渡す流れは同じなはずなのですが、エラーが出てしまいます。

どこが間違っている、もしくは足りてないのでしょうか?
よろしくお願いします。

#tableviewなどのコードは省いてます。未実装のコードも混じってますがすみません

view

swift

1import UIKit 2 3class SearchViewController: UIViewController { 4 5 @IBOutlet weak var searchBar: UISearchBar! 6 @IBOutlet weak var tableView: UITableView! 7 8 private var presenter: SearchPresenterInput! 9 10 override func viewDidLoad() { 11 super.viewDidLoad() 12 } 13} 14 15extension SearchViewController: UISearchBarDelegate { 16 17 func searchBarSearchButtonClicked(_ searchBar: UISearchBar) { 18 presenter.didTapSearchButton(text: searchBar.text) // ここで上記のエラー 19 } 20}

presenter

swift

1import Foundation 2 3protocol SearchPresenterInput { 4 var numberOfTweet: Int {get} 5 func didTapSearchButton(text: String?) 6 func user(forRow row: Int) -> User? 7} 8 9final class SearchPresenter: SearchPresenterInput { 10 11 private var api: SearchUserApi 12 private var users: [User] = [] 13 14 init(api: SearchUserApi) { 15 self.api = api 16 } 17 18 var numberOfTweet: Int { 19 return users.count 20 } 21 22 // これにアクセスできない 23 func didTapSearchButton(text: String?) { 24 print(text) 25 } 26 27 func user(forRow row: Int) -> User? { 28 guard row < users.count else { return nil } 29 return users[row] 30 } 31 32 33}

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

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

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

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

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

guest

回答1

0

ベストアンサー

presenterがnilなのでは?

投稿2019/04/23 07:12

fuzzball

総合スコア16731

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

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

mogiruri

2019/04/24 06:35

presenterにnilが入っているのをデバッグして確認できたのですが、どうも例文と相違はなくなぜだろうと思っていたのですが、appdelegateにて値を代入していたため例文では動いていたようです。 そもそもなぜそっちのファイルに書いてあったのか意図が読めませんが、解決の糸口になりましたのでベストアンサとさせていただきます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問