ios - Swift:如何通过完成处理程序(闭​​包)的引用存储对象数组?

标签 ios arrays swift asynchronous closures

有一个API回调返回Json格式结果。简而言之,需求是我需要不断调用这个 API,并不断对其返回的结果实现广度优先搜索。

想象它是一张有许多节点和连接的 map 。每次我调用节点的 API 调用时,它都会返回其连接节点的列表。我现在需要的只是一个数组,它保存所有已访问过的节点,以避免重复访问。

但这是 Swift,我对它很陌生。我使用 Array 并在完成处理程序中作为 inout 传递。但有一个错误:转义闭包只能通过值显式捕获 inout 参数,这意味着我不能这样做。

现在你可能会问为什么我的数组必须通过引用存储。因为 API 调用是异步的,这意味着我必须等到它返回才能继续进行广度优先搜索,这意味着我必须通过引用传递此数组才能进行递归。

我还有哪些其他解决方案?

最佳答案

Swift 数组是值类型(不是引用类型),因此您需要将数组存储在对象中。然后,您可以将该对象传递给处理程序,并在对象内设置数组内容,该对象作为闭包中的引用进行携带。

关于ios - Swift:如何通过完成处理程序(闭​​包)的引用存储对象数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43019314/

相关文章:

ios - 使标签可复制

ios - 在 Swift 3.0 中使用 XMPP 阻止和取消阻止用户

ios - UIButton 数组或方法 UIButton(名为 : "\(string)")

iphone - 如何在没有 AutoLayout 的情况下很好地适应 iOS 中 View 的高度和位置?

ios - 在 Swift 中从 UITableView 中删除一个单元格

ios - 如何使 kCGPathStroke 在 Swift 2 中工作?

java - Java中如何处理大数组

c - 期望的常量表达式

javascript-将结果集从数据库推送到数组失败

swift - 如何使用 https ://github. com/bendodson/MonthYearPickerView-Swift 库?