有一个API回调返回一个Json格式的结果。简而言之,我需要继续调用此API并在其返回的结果上保持实现广度优先搜索。
成像它是一个包含许多节点和连接的地图。每次我调用一个节点的API调用时,它都会返回我连接节点的列表。我现在需要的只是一个数组,它可以保存已访问过的所有节点,以避免重复访问。
但这是Swift,我是新手。我正在使用Array
并在完成处理程序中传递inout
。但是有一个错误:escaping closures can only capture inout parameters explicitly by value
这意味着我不能这样做。
现在您可能会问为什么我必须通过引用存储我的数组。因为API调用是异步的,这意味着我必须等到它继续进行广度优先搜索,这意味着我必须通过引用传递这个数组才能进行递归。
我可能有哪些其他解决方案?
答案 0 :(得分:0)
Swift Arrays是值类型(不是引用类型),因此您需要将数组存储在对象中。然后,您可以将对象传递给处理程序,并在对象内部设置数组内容,该对象作为闭包中的引用。