En realidad, esto es solo un cambio de sintaxis. OK, entonces tenemos esta llamada al método:
[NSPredicate predicateWithFormat:@"name contains[c] %@", searchText];
En Swift, los constructores omiten la parte "blahWith ..." y simplemente usan el nombre de la clase como una función y luego van directamente a los argumentos, así [NSPredicate predicateWithFormat: …]
se convertiría NSPredicate(format: …)
. (Otro ejemplo, [NSArray arrayWithObject: …]
se convertiría en NSArray(object: …)
. Este es un patrón regular en Swift).
Entonces ahora solo necesitamos pasar los argumentos al constructor. En Objective-C, los literales NSString se ven así @""
, pero en Swift solo usamos comillas para las cadenas. Entonces eso nos da:
let resultPredicate = NSPredicate(format: "name contains[c] %@", searchText)
Y de hecho eso es exactamente lo que necesitamos aquí.
(Por cierto, notará que algunas de las otras respuestas usan una cadena de formato como "name contains[c] \(searchText)"
. Eso no es correcto. Eso usa interpolación de cadenas, que es diferente del formato de predicado y generalmente no funcionará para esto).