解包时出现崩溃可选
我有几个客户抱怨我的应用程序崩溃。我从来没有能够重现它。 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配置的设备)。
任何想法/提示/建议?
发生崩溃是因为macSegmentFromSSID
在你试图拆包时为零。 试试就像
if let setupDevice = self.unconfiguredDevices.value.first(where: { Device in Device.macEnd == macSegment}) {
setupDevice.unconfiguredDevice = unconfiguredDevice
}
这就是我的想法......但是对于崩溃的可重复性(0在我身边)我需要发布一个测试版本,看看测试版测试者说了些什么。 – user426132
@ user426132 hmm okk。 –
@ user426132如果你这样做: if unconfiguredDevice.macSegmentFromSSID!= nil {//其他代码在这里。 let macSegment = unconfiguredDevice.macSegmentFromSSID } –
'UnconfiguredDevice'是隐式解包的可选项吗?如果是这样,你应该用'?'标记它:'if let macSegment = unconfiguredDevice?.macSegmentFromSSID {' – the4kman
'你试图强制打开nil值。问题在这里unconfiguredDevice.macSegmentFromSSID! – iMuzahid
UnconfiguredDevice由WAC返回..我不认为它是可选的.. macSegment是一个扩展方法,它返回一个可选的。 – user426132