无法将类型[[String:Any]]的值转换为预期的参数类型'([String:Any])throws-> Bool'

时间:2019-10-07 10:47:13

标签: arrays swift dictionary

我有2个字典数组,我想检查字典的第一个字典中是否存在第二个字典的一个字典。

let dicA = [[String:Any]]()
let dicB = [[String:Any]]()

if dicA.contains(where: dicB[0]) {
   print("Contains")
}
else {
   print("Not Contains")
}

//它给了我这样的语法错误:-

  • 无法将类型[[String:Any]”的值转换为预期的参数类型'([String:Any])throws-> Bool'

2 个答案:

答案 0 :(得分:2)

Array的contains方法声明是这样的:

func contains(where predicate: (Element) throws -> Bool) rethrows -> Bool

这意味着您的where谓词不能是单个参数。应该是这样的闭包:

if dicA.contains(where: { (element) -> Bool in

    return false

}) {

} else {

}

替换闭包中的逻辑以返回所需的元素。

答案 1 :(得分:1)

在编码时花点时间。 )语句中不必要的if就是原因之一。

let dicA = [[String:Any]]()
let dicB = [[String:Any]]()

let element = dicB[0]

if dicA.contains(where: { (element) -> Bool in
    print("Contains")
    return true
}) {
}
else {
   print("Not Contains")
}