Фильтр массива с агрегатными операторами - PullRequest
0 голосов
/ 12 декабря 2018

array.filtered больше не существует в Swift, я ищу способ использовать оператор IN в закрытии array.filter так же, как я использовал его с NSPredicate.

До того, как запрос был чем-токак

let predicate = NSPredicate(format: "(user in %@)", overallUsers)
tasksArray.filtered(using: predicate)

Теперь это нельзя использовать с swift4, так как я могу добиться того же с помощью array.filter {}?Я пытался что-то вроде этого

tasksArray.filter{$0.user in overallUsers}

Это не с ошибкой «Не удалось преобразовать значение типа« @lvalue User »для закрытия типа результата« Bool ».Как это на самом деле должно быть сделано?

Ответы [ 2 ]

0 голосов
/ 12 декабря 2018

Вы можете проверить это следующим образом.

taskArray.filter( { overallUsers.contains($0.user) } )
0 голосов
/ 12 декабря 2018

Вместо tasksArray.filter{$0.user in overallUsers} вам нужно что-то вроде этого:

tasksArray.filter { task in
    overallUsers.contains(task.user)
}

Требование: User должно соответствовать Equatable.

...