日々の学び

更新日:

オプショナル型とxcode における画面遷移−iOSエンジニア2週目

 

こんにちは。

iOSエンジニア2週目が終わりました。(仮)をいつも書くのはめんどくさいので、頭の中で補完しておいて下さい。

これをいつまで書くか考えてたんですが、とりあえずは仕事中に勉強の時間がなくなるか業務にしっかりついていけるかするまでは書こうと思います。
まあその後も何か勉強になったことはその都度書く予定です。

 

今週主に学んだことは、オプショナル型についてです。タイトルに書いたxcodeの画面遷移については、ちょっと訳のわからない動作でしばらくつまづいたので、その解決法について書こうと思います。

 

オプショナル型とnilチェック

オプショナル型とはStringやIntと言った通常の型とは異なり、nil値を扱うことができる型のことです。これを使うことで、予期せぬnilにも対応できるため、バグの要因を減らすことができます。

下の2つのように?や!を用いて表します。

これらはそれぞれInt、Stringとは異なる型という扱いになります。

 

オプショナル型の変数をそのまま出力した場合は、下のようにOptionalがついた形で出力されます。

Int型でも同様にOptionalがついた形で出力されます。

 

また、オプショナル型と非オプショナル型は型が異なるため、それぞれを一緒に扱うことはできません。

 

これらを計算できるようにするためには強制的アンラップを行う必要があり、以下の3つがその主な方法です。

 

  • Forced Unwrapping (強制的アンラップ)

この時、変数にnilが入っているとアンラップ時にエラーになります。

 

  • Optional Binding (オプショナルバインディング)

If文などの条件式と合わせて使います。

nilの場合は「トレーニングはありません」が出力されます。

また、guard文でもオプショナルバインディングを行うことができます。

guard文では、条件に合わない場合にカッコ内の処理を行います。

 

  • Optional Chaining (オプショナルチェイニング)

オプショナルチェイニングは変数にnilが入っている場合でも、安全にメソッドを実行することができます。

オプショナル型の変数?.メソッド() 

オプショナル型の変数?.プロパティ

出力結果はオプショナル型となります。

 

また、??演算子はnilの場合のデフォルト値を設定することができます。

tempNumがnilの場合、デフォルト値として1がnumに入ります。

 

Navigation Controllerを用いた画面遷移

Navigation Controllerを用いた画面遷移は簡単にいうと、pushで横スライドの遷移、presentで下から出てくるモーダル遷移になります。

詳しくは以下のQiitaの記事が参考になります。

Swiftのページ遷移【Navigation Controller】

 

画面遷移についての説明は上の記事でされているので省きます。今回書きたかったのは、なかなか解決しなかった問題についてです。もしかしたら僕のような人がいるかもしれないので、もしいたら参考にして下さい。

 

問題となったのは、上のpush遷移を実装しようとしていたんですが、実装してみると、なぜか画面が2回横に遷移するんです。

たぶん1日ぐらい悩んだんですが、実はすごく単純なことでした。

segueを使わない方法で遷移させようとしていたのですが、先にsegueの設定をしてしまっていて、それを忘れたままpush遷移のコードを書いていたんです。
それのせいでそれぞれの遷移が行われて2回遷移していたと。そういう訳なんです。

 

もしかしたら、僕みたいな初心者の方なら同じミスをするかもしれません。これがいつか誰かの役に立ちますように。

 

 

以上!

スポンサードリンク




スポンサードリンク




-日々の学び

Copyright© トマブログ , 2021 All Rights Reserved Powered by STINGER.