私はこのコードでif let
ラインで悪名高いfatal error: unexpectedly found nil while unwrapping an Optional value
エラーを得た:Swiftの暗黙のうちにアンラップされたオプションを安全に処理するための簡潔な方法は何ですか?
var displayShelves: [Shelf] {
get {
if let shelves = rootShelf.childShelves as NSArray as? [Shelf] {
return shelves
}
return []
}
この理由はrootShelf.childShelves
がvar childShelves: NSMutableArray! { get set }
としてスウィフトにインポートされている客観Cクラスですので、私はしようとするということです[Shelf]
にキャストすると、nil
に等しくなります。余分なifまたはguardを使わずに、これを簡潔にどのようにアンラップするのですか?私は次のことを行うことができます:
var displayShelves: [Shelf] {
get {
if rootShelf.childShelves != nil {
if let shelves = rootShelf.childShelves as NSArray as? [Shelf] {
return shelves
}
}
return []
}
}
しかし、これは、オプションのチェーンが防止する必要がある種類のコードです!だから、これを行うための迅速な方法がありますか? rootShelf.childShelves
がnil
とき
これはあなた自身の質問に対する実際の回答であるか、これはあなたの質問の詳細な情報を意味していますか?後者の場合は、この回答を削除し、質問に情報を入れてください。 – rmaddy
私には妥当な自己回答のようです。 – jtbandes
@jtbandes最後の文章のために私は尋ねます。 – rmaddy