arrays - Swift:无法转换 '(Any) throws -> Bool? to expected argument type ' 类型的值(任何)抛出 -> Bool?

标签 arrays swift

我正在尝试获取两个数组并将它们组合成一个没有任何重复的新数组。但是,我无法解决以下错误。

Cannot convert value of type '(Any) throws -> Bool? to expected argument type '(Any) throws -> Bool?

我正在尝试合并两个包含多个词典的数组。我正在比较数组中每个字典中的“名称”。

let array2Name = array2.flatMap({$0["name"]}) // ["eli", "will"]
array2 = array1.reduce(array2) { !array2Name.contains(where: $1["name"] as! (Any) throws -> Bool? ?? "") ? $0 + [$1] : $0 }
print(array2)

最佳答案

您没有正确比较传递到 contains 闭包中的值。并且您不能在闭包内的闭包内使用 $ 变量。

let array2Name = array2.flatMap { $0["name"] }
array2 = array1.reduce(array2, { result, value in
    !array2Name.contains(where: { $0 == value["name"] ?? "" }) ? result + [value]: result
})
print(array2)

编辑: 这消除了 array2Name 值。

array2 = array1.reduce(array2) { result, value in
    result.contains(where: { $0["name"] == value["name"] }) ? result: result + [value]
}

关于arrays - Swift:无法转换 '(Any) throws -> Bool? to expected argument type ' 类型的值(任何)抛出 -> Bool?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42058422/

相关文章:

javascript - 将数组中的两个对象与变量进行比较以显示第三个对象

java - java转义分析也适用于只有一个元素的数组吗?

swift - 如何快速解析特定标签

ios - Firebase:Swift - 在不知道父键的情况下查询子节点中的值

ios - 将渐变应用于 PDF

ios - 快速字符串操作

C-传递 3d 数组、分配和人口

c# - C#中的正则表达式解析为双数组

javascript - 如何返回表示元素字符串长度的数字数组?

ios - 即使创建了 Swift Bridging Header 文件,也无法在 Objective C 中引用 Swift 类