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

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

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

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

Swift

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

Q&A

解決済

1回答

1017閲覧

検索結果がnilの場合があるため、オプショナルのバインディングを行う必要はないのでしょうか?

kazuki_user

総合スコア147

iOS

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

Swift

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

0グッド

0クリップ

投稿2020/09/08 09:46

## 検索結果がnil?

GitHubAPIを利用してレポジトリをsearchBarで検索するアプリを作っています。

検索結果はtableViewで表示しているのですが、そのオプショナルのバインディングについて質問です。

下記コードにて、if letを使ったのですが以下の警告が出ました。

Non-optional expression of type 'UITableViewCell' used in a check for optionals

検索結果がnilの場合があるため、オプショナルのバインディングを行う必要はないのでしょうか?

## コード

swift

1 override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 2 3 if let cell: UITableViewCell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) { 4 let rp = repo[indexPath.row] 5 cell.textLabel?.text = rp["full_name"] as? String ?? "" 6 cell.detailTextLabel?.text = rp["language"] as? String ?? "" 7 cell.tag = indexPath.row 8 return cell 9 } 10 11 return UITableViewCell() 12 } 13

質問は以上です。
お時間あるときに、ご返信頂けましたら幸いです????

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

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

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

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

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

guest

回答1

0

ベストアンサー

このメソッドは nil を返さないのでオプショナルバインディグを行っても意味がありません。

検索結果がnilの場合があるため、オプショナルのバインディングを行う必要はないのでしょうか?

このような説明はどこにあったのでしょうか。
ちょっと興味があるので、見かけた場所を教えていただければと思います。

##追記
各メソッドがどのような引数を取り、どのような値を返すのかは、マニュアルを逐一参照するまでもなく、Xcode の自動補完を使えば簡単にわかります。

イメージ説明

上記のキャプチャだと、使おうとしているメソッド(青く反転している部分)の先頭は UITableViewCell となっているため、戻り値はオプショナル型ではないことがわかります。

ちなみに、dequeueReusableCell(withIdentifier:)の方はオプショナル型の UITableViewCellを返すため、こちらは必要に応じてオプショナルバインディングが必要になります。

また、一度コードを入力した後でも、気になるメソッドや変数名で Option + クリック することで、マニュアルや型情報を参照することが可能です。

イメージ説明

これらの機能をうまく活用すると、思い込みがないコードがかけるようになるのではないでしょうか。

投稿2020/09/08 10:26

編集2020/09/08 11:14
TsukubaDepot

総合スコア5086

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

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

kazuki_user

2020/09/08 10:57

いえ、僕の想像です。???? そもそもdequeueReusableCellメソッドが、nilを返さない仕様なのですね。 ご返信ありがとうございました。
TsukubaDepot

2020/09/08 11:15

想像で書いてしまうと潜在的なバグを埋め込んでしまう要因になるのではないでしょうか。 回答に型名やメソッドの引数、戻り値などを簡単に調べる方法を追記しましたので、活用していただければと思います。
kazuki_user

2020/09/08 11:28

ありがとうございます????‍♂️
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問