使用回调函数在空数据上崩溃

时间:2018-07-30 08:45:26

标签: ios arrays swift xcode

这是我的代码:

exec-maven-plugin

我得到nil argLine,所以只有我检查是否获得了nil值,然后当涉及回调时,它在这里graph = Graph() g = graph.traversal().withRemote(DriverRemoteConnection('ws://localhost:8182/gremlin','g')) 崩溃。因为它没有附加值。我不知道为什么,但是无法实现。任何解决方案都将有所帮助。

4 个答案:

答案 0 :(得分:1)

检查<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.2/jquery.min.js"></script> <time dir="auto" class="timeago" datetime="2018-07-28 21:08:57"></time>是否被踩进去。

此时,forEachpro可能为nil,而对nil集合未调用pro.combodata

可能您正在尝试访问forEach之后的[0]索引元素。

答案 1 :(得分:0)

当可选数组为nil时,调用append不会执行任何操作,您需要先对其进行初始化

if (pro?.combodata == nil) {
   pro?.combodata = []
   pro?.combodata?.append(com)
}

答案 2 :(得分:0)

尝试使用此:

 guard let pro = Mapper<SubCategoryProducts>().map(JSONString: dt) else { return }
 let com = ComboData()
 com.price = pro.Price ?? 0
 com.type = pro.type ?? ""
 com.amount = pro.quantity ?? ""

 if (pro.combodata == nil) {
   pro.combodata = [com]
 }

问题在于,当combodata中的pro为零时,您试图附加对象,这意味着您正在尝试nil.append(),而该对象应该为[ComboData].append()。 / p>

我希望这会对您有所帮助。

答案 3 :(得分:0)

执行self.arrayForCombo.removeAll()语句后,arrayForCombo变为空。如果您的pro?.combodatanil,则forEach语句将无法执行。因此,您的arrayForCombo还是空的。 但是,在callBack语句中,您强制尝试访问arrayForCombo的第一项,无论是否为空。这就是为什么数组为空时会崩溃的原因。

您可以安全地绕过这样的问题:

if let firstItem = arrayForCombo.first {
    callback(firstItem)
}