Це насправді просто перемикач синтаксису. Добре, отже, ми маємо виклик цього методу:
[NSPredicate predicateWithFormat:@"name contains[c] %@", searchText];
У Swift конструктори пропускають частину "blahWith ..." і просто використовують ім'я класу як функцію, а потім переходять безпосередньо до аргументів, [NSPredicate predicateWithFormat: …]
що стане NSPredicate(format: …)
. (Для іншого прикладу [NSArray arrayWithObject: …]
стало б NSArray(object: …)
. Це звичайний зразок у Свіфта.)
Отже, нам просто потрібно передати аргументи конструктору. У Objective-C виглядають літерали NSString @""
, але в Swift ми просто використовуємо лапки для рядків. Отже, це дає нам:
let resultPredicate = NSPredicate(format: "name contains[c] %@", searchText)
І насправді саме тут нам потрібно.
(До речі, ви помітите, що деякі інші відповіді замість цього використовують рядок форматування, наприклад "name contains[c] \(searchText)"
. Це неправильно. Тут використовується інтерполяція рядків, яка відрізняється від форматування предикатів і, як правило, не працює для цього.)