логическое возвращение, помогите найти исправление - PullRequest
0 голосов
/ 08 марта 2019

У меня есть простая проблема, я хочу вернуть это:

let results = prices.filter{
            if($0.MultipleSearchString != nil){
                predicate.evaluate(with: ($0.MultipleSearchString?.lowercased())!)
            }else {
                self.loadPricesFromDb()
            }
        }

, но у меня есть проблема с ним, потому что это создает проблему вроде: Отсутствие возврата в закрытии, как ожидается, вернет 'Bool', и я не знаюпочему кто-то может мне это объяснить?

1 Ответ

1 голос
/ 08 марта 2019

Вы неправильно используете функцию фильтра.

Фильтр с встроенным замыканием оценит каждый элемент массива с логикой в ​​предоставленном замыкании и вернет массив элементов, которые удовлетворяют этой логике, например,:

let results = prices.filter {
    $0.MultipleSearchString != nil
}

Приведенное выше будет иметь результаты со всеми элементами, которые MultipleSearchString отличаются от nil.

Также плохо вызывать функцию, которая предположительно загружает данные из базы данных, поскольку она будетзапускать (почти) каждую итерацию.

Вам необходимо провести рефакторинг своего кода, чтобы лучше работать с намеченным решением.

...