Подтвердить что ты не робот

Неоднозначное использование "фильтра" при преобразовании проекта в Swift 4

Я попытался преобразовать свой проект в Swift 4 в этот день. У меня ошибка в этой строке:

return Forum.threads?.filter({ //... })

Ошибка говорит:

Неоднозначное использование "фильтра"

Нашел этого кандидата (Swift.Set)

Нашел этот кандидат (Swift.Sequence)

threads объект реализуется следующим образом: Forum:

var threads: Set<Thread>?

Так как решить это...? Спасибо за вашу помощь.

EDIT: при обнаружении ошибки в журнале, вот кандидаты:

Swift.Set:369:17: note: found this candidate
    public func filter(_ isIncluded: (Set.Element) throws -> Bool) rethrows -> Set<Element>
                ^
Swift.Sequence:35:17: note: found this candidate
    public func filter(_ isIncluded: (Self.Element) throws -> Bool) rethrows -> [Self.Element]
4b9b3361

Ответ 1

Чтобы решить эту проблему, объявите тип переменной перед ее возвратом.

let x: [Character] = input.filter{/**/}
return x

Это устраняет неоднозначность возвращаемого типа метода filter {}.

Ответ 2

Здесь, похоже, существует общая проблема. Например, это метод расширения в UITextView.

неоднозначный фильтр

Вы можете обойти его, переписывая как цикл for. (Извините, не большое решение, но, по крайней мере, работа.)