2017-03-28 3 views
1

ErrorURLErrorとすると、アプリがクラッシュする 'code'プロパティにアクセスしてみてください。私はnil、またはnilを返すコードの呼び出しを返すキャストを理解することができますURLErrorにキャストし、 'code'プロパティにアクセスするとクラッシュする

EXC_BAD_INSTRUCTION (code=EXC_I386_INVOP, subcode=0x0).

func somFunc(things: [Thing]?, 
      error: Error?) { 

       let errorCopy = (error as? URLError) 
       let errorCode = errorCopy?.code //Crash 
} 

得ます。しかし、私はクラッシュの原因を確信していません。

私は読んしようとする前に、私は「コード」errorCopyを印刷するとき、私が取得:

+0

'聞かせてのerrorCode = errorCopy .code'それはおそらくあなたが強制されていないという事実を考慮すると、あなたのクラッシュの原因ではないでしょうか?それをアンラップする。 –

+0

その行でクラッシュしています。 – scord

答えて

0

私はまだクラッシュを説明することはできませんが、私は仕事をまわりました。エラーをNSErrorにキャストしてから、codeプロパティを読み取ります。

let errorCopy = (error as? NSError) 
let errorCode = errorCopy?.code 

それから私は、クラッシュすることなく、エラーコードを使用することができます。

if errorCode == URLError.cancelled.rawValue { 
//Do Something 
} 
+0

なぜそれが間違っているのか説明できますか?それは働いていると思う。これは単なる明らかな回避策です。私はまだ最も正しい解決策を探しています。 – scord

+0

'let errorCode = errorCopy?.code'の後に行を表示できますか?もう一度あなたのアプリをクラッシュさせるべきではありません。 –

+0

URLErrorへのキャストが失敗していないと言ったという事実を考慮すると、エラーコードを切り替える必要があります。以下の投稿を –

関連する問題