web-dev-qa-db-fra.com

avertissement: 'characters' est obsolète: veuillez utiliser directement String ou Substring

characters - une propriété d'instance de String, est déconseillée avec Xcode 9.1

Il était très utile d’obtenir une sous-chaîne à partir de String en utilisant la propriété characters, mais elle est maintenant déconseillée et Xcode suggère d’utiliser substring. J'ai essayé de vérifier autour de SO questions et tutoriels/instructions aux développeurs Apple pour la même chose. Mais ne pouvait voir aucune solution/alternative comme suggéré.

Voici un message d'avertissement:

'characters' est obsolète: veuillez utiliser String ou Substring

 enter image description here

J'ai tellement d'opérations sur les chaînes qui sont exécutées/gérées à l'aide de la propriété characters.

Quelqu'un a une idée/info sur cette mise à jour?

133
Krunal

Swift 4 a introduit des modifications sur la chaîne de caractères API .
Vous pouvez simplement utiliser !stringValue.isEmpty au lieu de stringValue.characters.count > 0

pour plus d'informations, vous obtenez l'échantillon de ici

par exemple 

let edit = "Summary"
edit.count   // 7
237
songxunzhao

Swift 4 vs Swift 3 exemples:

let myString = "test"

for char in myString.characters {print(char) } // Swift 3
for char in myString { print(char) } // Swift 4

let length = myString.characters.count // Swift 3
let length = myString.count // Swift 4

Cet avertissement est juste un sommet de l'iceberg, il y avait un tas de changements de chaînes, les chaînes sont à nouveau une collection de caractères, mais nous avons quelque chose de nouveau et de cool, les sous-chaînes :)

C'est une excellente lecture à ce sujet: https://useyourloaf.com/blog/updating-strings-for-Swift-4/

2
Boris

Utilisez cette characters car String a cessé d'être une collection dans Swift 2.0. Cependant, ce code est toujours valide dans Swift 4 mais n’est plus nécessaire maintenant que String est à nouveau Collection.

Par exemple, Swift 4 String a maintenant une propriété de décompte direct qui donne le décompte de caractères:

// Swift 4
let spString = "Stack"
spString.count           // 5

Exemples pour String et SubString.

Chaîne

Swift 4 String maintenant obtenir directement un élément qui donne le premier caractère de String: (string.characters.first)

let spString = "Stack"
let firstElement = spString.first   //S

SubString

En utilisant SubString, obtenez le premier caractère. 

let spstring = "Welcome"
let indexStartOfText = spstring.index(spstring.startIndex, offsetBy: 1)
let sub = spstring.substring(to: indexStartOfText)
print(sub) //W
1
Pranavan Sp

Vous pouvez également utiliser ce code pour regrouper des dictionnaires sans utiliser {$ 0.characters.first! }. 

let cities = ["Shanghai": 24_256_800, "Karachi": 23_500_000, "Beijing": 21_516_000, "Seoul": 9_995_000]
let groupedCities = Dictionary(grouping: cities.keys) { $0.first! }
print(groupedCities)
0
mahendra solanki