2017-12-20 39 views
0

この警告メッセージの意味を教えてください。キャスト強制迅速な警告メッセージが消去されない

let x = cell.backgroundView!.layer.sublayers as! [CALayer] 

'[CALayerの]? '[CALayer]'はオプションをアンラップします。あなたは '!'を使うつもりでしたか?

答えて

2

強制的なキャストを使用することは意味がありません。 sublayersは、オプションの配列を返します。オプションの配列は安全にアンラップしてください。

if let sublayers = cell.backgroundView?.layer.sublayers { 
    // do something with sublayers (which is a non-optional [CALayer]) 
} 

backgroundViewの代わり!?の使用を注意してください。

スウィフト本のrelevant sectionsを読んで、オプションを正しく使用する方法を学んでください。さもなければあなたのアプリはクラッシュするでしょう。その結果に関する詳細については、What does "fatal error: unexpectedly found nil while unwrapping an Optional value" mean?を参照してください。

+0

ありがとうございます。あなたの提案を採用すると、2番目のコマンドでエラーが発生します - x = cell.backgroundView!.layer.sublayersはエラー値としてフラグが立てられた_ = x.map({$ 0.removeFromSuperlayer()}) '[CALayer]'タイプのメンバーに 'removeFromSuperlayer'というメンバーはありません –

+2

今、全く異なる質問をしています。この答えがキャストに関する最初の質問を解決した場合は、この答えを受け入れることでこれを示します。次に、新しい問題に関する新しい質問を関連するすべてのコードとエラーメッセージと共に投稿します – rmaddy

+0

私は答えを受け入れました(上向きの矢印をクリックしてください)。 2番目の問題は私がキャストによって解決された私の元の問題でした(!)が、まだ警告に遭遇しました。私の問題を解決する努力をいただきありがとうございます。 David –

関連する問題