我收到此错误:
可选类型'(((RestTime)->())?必须解压缩为'(RestTime)->()'类型的值
我从VC调用函数:
let str: String = "\u{0D85}"
for scalar in str.unicodeScalars {
print(scalar.value)
}
/*
prints: 3461
*/
从VC调用完整形式的函数,然后对其进行迭代以从MK方向创建路由。我的问题是,我可以通过这种方式使用可选的完成处理程序吗?
控制台会像预期的那样打印1,2,1,3,但不会调用完成。 4永远不会被解雇。完成=零,所以当我解开如果完成=完成它是行不通的。
另外,完成?(restTime)也不起作用,也不将默认值设置为nil,就像我用print(completion)= nil进行检查时一样。
猜测发生了什么: 是第一个完成处理程序“正在完成功能”,因此第二个不执行吗?我传递的是nil值,而不是不运行它?
很抱歉,如果这很简单,谷歌是紫色的,仍然不确定我在做什么错。
答案 0 :(得分:1)
我认为问题出在这里:
// ...
print("2")
self.calculateSegmentDirections(index+1, time: timeVar,
routes: routesVar, loc: restLocation, completion: nil)
// ...
当您递归调用calculateSegmentDirections
时,您不会上交完成处理程序,而是上交nil
。这是故意的吗?我认为应该是:
// ...
print("2")
self.calculateSegmentDirections(index+1, time: timeVar,
routes: routesVar, loc: restLocation, completion: completion)
// ...