怎么把[Int]转换成int?

时间:2018-10-18 12:29:06

标签: swift swift4

我有这样的代码

let index = tableView.selectedRowIndexes.map { Int($0) }
        arrDomains.remove(at: index)

但是出现错误:

  

无法将类型“ [Int]”的值转换为预期的参数类型“ Int”

如何将[Int]转换为int?

Swift 4,macOS

2 个答案:

答案 0 :(得分:5)

索引 es 是复数,表示有多个值

selectedRowIndexes返回一个IndexSet对象。您可以使用forEach,但必须反转索引,否则会出现著名的迭代范围外变异错误。

let indexes = tableView.selectedRowIndexes
indexes.reversed().forEach{ arrDomains.remove(at: $0) }

indexSet映射到[Int]是多余的。

Here是一种优化的remove(at indexes: IndexSet)方法。

答案 1 :(得分:1)

index是一个整数数组。但是您需要将Int传递给remove方法。

如果要删除选定行索引的所有对象,则写:

let indexes = tableView.selectedRowIndexes.map { Int($0) }
indexes.reversed().forEach { arrDomains.remove(at: $0) }

如果要删除某个索引处的对象,则可以写:

guard let index = tableView.selectedRowIndexes.map { Int($0) }.first(where: { /*.your condition here */ }) else { return }
arrDomains.remove(at: $0)