2017-08-08 1 views
0

私のアプリでクラッシュを訴えているクライアントがいくつかあります。私はそれを再現することはできませんでした。 Crashliticsがクラッシュを検出しました:オプションのアンラッピング時にクラッシュする

func addDevice(unconfiguredDevice: UnconfiguredDevice) { 

    if let macSegment = unconfiguredDevice.macSegmentFromSSID { <<-CRASH 
     print("unconfigured mac: \(macSegment)") 

     if let setupDevice = self.unconfiguredDevices.value.first(where: { Device in Device.macEnd == unconfiguredDevice.macSegmentFromSSID! }) { 
      setupDevice.unconfiguredDevice = unconfiguredDevice 
     } else { 
      self.unconfiguredDevices.value.append(SetupDevice(unconfiguredDevice: unconfiguredDevice)) 
     } 
    } 
} 

クラッシュタイプはEXC_BREAKPOINTです。私は、この種のクラッシュがオプションのアンラッピングに関連している可能性があることを、この周りのいくつかの他のスレッドで見てきました。実際、macSegmentメソッドはオプションです。しかし、私はその問題が何であるか理解していません。 (この方法は、WACを介して設定可能なデバイスを検出するためのものです)。

アイデア/ヒント/提案はありますか?

+0

'UnconfiguredDevice'は暗黙的にアンラップされたオプションですか?そうであれば、それを '?'でマークする必要があります: ''もしlet macSegment = unconfiguredDevice?.macSegmentFromSSID {' – the4kman

+0

あなたは強制的にゼロ値をアンラップしようとしています。問題はunconfiguredDevice.macSegmentFromSSIDになります! – iMuzahid

+0

UnconfiguredDeviceはWACによって返されます。私はオプションではないと思います。どのようにmacSegmentがオプションのオプションを返す拡張メソッドであるか。 – user426132

答えて

0

アンラップしようとしたときにmacSegmentFromSSIDがnilだったためクラッシュしました。 try like

if let setupDevice = self.unconfiguredDevices.value.first(where: { Device in Device.macEnd == macSegment}) { 
      setupDevice.unconfiguredDevice = unconfiguredDevice 
     } 
+0

これも私が思うことですが、クラッシュの再現性(私の側では0)に向けてテスト版をリリースし、ベータテスト担当者が何を言いたいのかを見ていく必要があります。 – user426132

+0

@ user426132 hmm okk。 –

+0

@ user426132どうすればいいですか? if unconfiguredDevice.macSegmentFromSSID!= nil {//ここに他のコードが入ります。 let macSegment = unconfiguredDevice.macSegmentFromSSID } –

関連する問題