enum fukidasiState {
case 標準
case 枠だけ
case 透明
}
たとえば以下のようなswitch文を書く。
//currentの吹き出しを辞書から取り出す
let fd = fukidasiDic[currentFukidasiID]
//タップするたびに枠だけ、透明、不透明をスイッチ
switch fd?.fukidasiState {
case .標準:
(何かの処理)
case .枠だけ:
(何かの処理)
case .透明:
(何かの処理)
}
case .標準:
の行で「Enum case '標準' not found in type 'fukidasiState?'」というエラーが出てうまくいかない。
Xcodeで自動で修正候補を出してもくれない。
これはoptionalが関係するようで、以下のように( )!でくくってやるとうまくいく。
値がnilになる場合に?を付けたり、使用時に!でアンラップしたりとなんだかわかりにくいoptionalだ。
switch (fd?.fukidasiState)! {
Swiftを学習するならoptionalは重要な胆になるだろうね。
Enum以外、Switch以外でもエラーは出るけど、単純なものならXcodeで修正候補を出してくれるけど、今回のケースでは出してくれなかったのでだいぶ悩んでしまった。
optionalについてはSwift2.xでも仕様が変更されたり、いろいろめんどかった。早く仕様が固まってくれるといいが。
0 件のコメント:
コメントを投稿