На самом деле это просто переключатель синтаксиса. Итак, у нас есть вызов этого метода:
[NSPredicate predicateWithFormat:@"name contains[c] %@", searchText];
В Swift конструкторы пропускают часть «blahWith…» и просто используют имя класса как функцию, а затем сразу переходят к аргументам, [NSPredicate predicateWithFormat: …]что и стало бы NSPredicate(format: …). (В качестве другого примера [NSArray arrayWithObject: …]могло бы стать NSArray(object: …). Это обычный шаблон в Swift.)
Итак, теперь нам просто нужно передать аргументы конструктору. В Objective-C литералы NSString выглядят так @"", но в Swift мы просто используем кавычки для строк. Это дает нам:
let resultPredicate = NSPredicate(format: "name contains[c] %@", searchText)
И это именно то, что нам здесь нужно.
(Кстати, вы заметите, что в некоторых других ответах вместо этого используется строка формата, например "name contains[c] \(searchText)". Это неверно. В ней используется интерполяция строк, которая отличается от форматирования предиката и обычно не работает для этого.)