在 For In 循环中展开可选值时意外发现 nil
Posted
技术标签:
【中文标题】在 For In 循环中展开可选值时意外发现 nil【英文标题】:Unexpectedly found nil while unwrapping an Optional value in For In Loop 【发布时间】:2015-05-21 09:42:30 【问题描述】:我正在尝试从找到的 CBService 中读取 CBCharacteristic 值,但我不断收到错误消息
fatal error: unexpectedly found nil while unwrapping an Optional value
我的代码如下
func peripheral(peripheral: CBPeripheral!, didDiscoverCharacteristicsForService service: CBService!, error: NSError!)
for characteristic in service.characteristics as! [CBCharacteristic]
peripheral.readValueForCharacteristic(characteristic)
检查以确保 CBService 不为零,并且看起来是正确的。任何人都知道打开此列表的正确快速方法吗?
【问题讨论】:
尝试使用 if let x = service.characteristics as! [CBCharacteristic] 在 for 循环之前。将 for 循环放入 if let 中。 大多数时候,你应该只使用!
,当你100%确定访问它时它不会是nil
。
【参考方案1】:
谢谢狗咖啡!
func peripheral(peripheral: CBPeripheral!, didDiscoverCharacteristicsForService service: CBService!, error: NSError!)
if let characteristics = service.characteristics as? [CBCharacteristic]
for characteristic in characteristics
peripheral.readValueForCharacteristic(characteristic)
【讨论】:
您可以使用 nil-coalescing 运算符将其缩短为不带if
的 for
(假设您不希望代码处理 nil
):for characteristic in characteristics as? [CBCharacteristic] ?? []
以上是关于在 For In 循环中展开可选值时意外发现 nil的主要内容,如果未能解决你的问题,请参考以下文章