Swift filtre de tableau de chaînes de caractères
J'ai eu des ennuis de filtrage tableau de mots-clés (chaînes de caractères) dans swift ,Mon code:
self.filteredKeywords=filter(keywords.allValues, {(keyword:NSString) ->
Bool in
let words=keyword as? NSString
return words?.containsString(searchText)
})
Comme AnyObject
ne peut pas être sous-type de NSString
, je suis coincé avec ce!
Quelle est l'erreur exacte que vous obtenez? Ce qui est imprimé si vous essayez
Juste un avis que vous êtes de retour facultatif. Espérons que cette aide
il ne fonctionne pas il me donne l'erreur mentionnée ci-dessus : "AnyObject n'est pas un sous-type de NSString"
Ne soit de la ci-dessous les réponses de réponse à votre question?
NSLog("\(keywords)")
?Juste un avis que vous êtes de retour facultatif. Espérons que cette aide
il ne fonctionne pas il me donne l'erreur mentionnée ci-dessus : "AnyObject n'est pas un sous-type de NSString"
Ne soit de la ci-dessous les réponses de réponse à votre question?
OriginalL'auteur Meseery | 2015-04-04
Vous devez vous connecter pour publier un commentaire.
Swift 4.2 propose une nouvelle façon de faire:
OriginalL'auteur Adrian
[Mis à jour pour Swift 2.0]
Comme
NSString
est un numéro d'appel gratuit comblé de SwiftString
, il suffit d'éviter les forçages avec:Mais, si vous pensez que
allValues
ne sont pas des chaînes:qui retourne un tableau facultatif.
OriginalL'auteur GoZoner
Votre
filter
est plus[AnyObject]
, mais votre fermetureNSString
. Ils doivent correspondre. Aussi, le résultat doit être unBool
, pas unBool?
. Vous pouvez répondre à ces tout simplement comme ceci:Ce accepte
AnyObject
puis tente de les obliger àNSString
. Il a ensuite néant-coalleces (??
) le résultat pour vous assurer qu'il est toujours unBool
.Je le recommande, cependant, le traitement de
keywords
comme un[String:String]
plutôt qu'unNSDictionary
. Qui pourrait se débarrasser de toutes les complications deAnyObject
. Ensuite, tu peux faire ça:Chaque fois que possible, convertir Fondation collections dans Swift collections dès que vous le pouvez et de les stocker. Si vous avez entrant objets de la Fondation, vous pouvez convertir facilement avec des techniques comme:
Ou vous pouvez effectuer les opérations suivantes à convertir en tels qu'ils vous crash en debug (mais en silence "travail" dans libération):
OriginalL'auteur Rob Napier
Il est à la fois un problème avec GoZoner réponse à certains types de données, et aussi un peu meilleure façon de le faire. Les exemples suivants montrent ceci:
Probablement pas le jeu que vous attendiez!
Toutefois, cela fonctionne très bien de cette façon, si nous n'avons pas de type animalArray comme un NSMutableArray:
Cependant, je vous recommande d'utiliser $0.contient() au lieu de $0.rangeOfString() != nul parce qu'il fonctionne dans les deux cas et légèrement améliore la lisibilité du code:
OriginalL'auteur Ryan Davis