こんにちは。
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}
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/04/24 06:35