Prédicat de filtre de tableau de chaînes de caractères dans SWIFT déclenche une erreur en disant NSCFString n'est pas valeur-clé de codage
Ci-dessous mon code snippet
//Search Bar Delegate
func searchBar(searchBar: UISearchBar, textDidChange searchText: String)
{
println(searchText)
var predicate:NSPredicate=NSPredicate(format: "SELF CONTAINS[c] \(searchText)")!
self.listItemToBeDisplayed=listItem.filteredArrayUsingPredicate(predicate)
(self.view.viewWithTag(1) as UITableView).reloadData()
}
Erreur que j'ai:
*** Fin de l'app en raison de uncaught exception 'NSUnknownKeyException', la raison: '[<__NSCFString 0x17405ef90> valueForUndefinedKey:]: ce
la classe n'est pas la valeur de la clé de codage conforme à la touche V."
Je veux filtrer les chaînes dans la gamme à être filtré par ma chaîne de recherche. Si ma chaîne de recherche est contenue dans toute la chaîne de caractères en tableau, alors il doit être inscrit.
- désolé, le code de mise en forme ne fonctionne pas.
- grâce nhgrif pour la mise en forme du code, de vraiment l'apprécier. safari fou ces jours-ci.
- Je crois
NSPredicate(format:)
fortement s'attend à être utilisé avecprintf
-style format des chaînes de caractères (automatiquement des devis arguments qu'il insère, etc). Vous êtes à l'aide de Swift chaîne d'interpolation qui pourrait être le problème. - génial! il fixe. Maintenant, ses pas s'écraser. var prédicat:NSPredicate=NSPredicate(format: "l'AUTO CONTIENT %@", texterecherché)! comment marquer cette question une réponse?
- Maintenant, vous pouvez. Qui est une sorte de deviner, donc je ne la mets pas dans une réponse tout de suite. 🙂
Vous devez vous connecter pour publier un commentaire.
NSPredicate(format:)
fortement s'attend à être utilisé avec printf style chaînes de format (automatiquement des devis arguments qu'il insère, etc).Vous êtes en utilisant Swift de la chaîne d'interpolation, de sorte que le déjà-formaté requête vient à
NSPredicate
comme une seule chaîne. Qui l'empêche de faire quoi que voodoo il le fait avec des arguments, vous laissant avec une requête mal formée.Utiliser printf mise en forme de style plutôt:
NSArray
, pasSwift.Array
, et depuis Swift 1.2 vous devez manuellement fonte de faire usage deNSArray
API. Mise à jour de la réponse à la refléter.De travail avec des prédicats de temps assez long. Voici ma conclusion (SWIFT)