Невозможно преобразовать значение типа '[String: Any]' в ожидаемый тип аргумента '([String: Any]) throws -> Bool' - PullRequest
0 голосов
/ 07 октября 2019

У меня есть 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 ]

2 голосов
/ 07 октября 2019

Объявление метода contains массива выглядит так:

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

Это означает, что ваш предикат where не может быть единственным аргументом. Это должно быть замыкание, подобное этому:

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

    return false

}) {

} else {

}

Замените логику в замыкании, чтобы вернуть нужные элементы.

1 голос
/ 07 октября 2019

Не торопитесь при кодировании. Излишняя ) в вашем 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")
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...