Ошибка при использовании NSPredicate с блоками в Swift «Не удалось найти перегрузку для ‘init’, которая принимает предоставленные аргументы»

#ios #iphone #swift #nspredicate

#iOS #iPhone #swift #nspredicate

Вопрос:

Я создал условный блок только для проверки NSPredicate с помощью Block. Вот как я это делаю,

введите описание изображения здесь

Если бы вы могли направить меня сюда, это было бы большой помощью.

Заранее спасибо.

Комментарии:

1. что такое CellInfo? Кроме того, размытый рисунок = ой, мои глаза.

2. Это NSObject. @Kreiri

Ответ №1:

Вы должны использовать ту же сигнатуру функции, которая требуется NSPredicate для блока. В вашем случае вам следует изменить свой код на:

 var condblock = {
    (celInfo: AnyObject!, dic : NSDictionary!) -> Bool in
    return true
}
let pred = NSPredicate(block: condblock)
 

Комментарии:

1. вы пробовали это? выдает то же самое «не удалось найти перегрузку …» в Xcode6 beta2

2. Ах, вам также нужно использовать AnyObject! вместо CellInfo! Я обновил ответ

3. Он по-прежнему выдает ту же проблему.

Ответ №2:

Если вы можете использовать встроенное замыкание и вывод типа, может быть, таких ошибок легче избежать?

 let pred = NSPredicate { cellInfo, dic in true }
 

Отказ от ответственности: у меня нет Xcode6