avertissement: ‘caractères’ est obsolète: veuillez utiliser directement Ssortingng ou Subssortingng

characters – une propriété d’occurrence de Ssortingng, est déconseillée avec Xcode 9.1

Il était très utile d’obtenir une souschaîne à partir de Ssortingng en utilisant la propriété characters , mais elle est maintenant obsolète et Xcode suggère d’utiliser la subssortingng . J’ai essayé de vérifier les questions SO et les didacticiels / directives pour les développeurs Apple. Mais ne pouvait voir aucune solution / alternative comme suggéré.

Voici un message d’avertissement:

‘caractères’ est déconseillé: veuillez utiliser une chaîne ou une sous-chaîne

entrer la description de l'image ici

J’ai tellement d’opérations sur les chaînes qui sont effectuées / traitées en utilisant des characters propriété.

Quelqu’un at-il une idée / des informations sur cette mise à jour?

Swift 4 a introduit des modifications sur l’API de chaîne.
Vous pouvez simplement utiliser !ssortingngValue.isEmpty au lieu de ssortingngValue.characters.count > 0

pour plus d’informations, vous obtenez l’échantillon d’ ici

par exemple

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

Swift 4 vs Swift 3 exemples:

 let mySsortingng = "test" for char in mySsortingng.characters {print(char) } // Swift 3 for char in mySsortingng { print(char) } // Swift 4 let length = mySsortingng.characters.count // Swift 3 let length = mySsortingng.count // Swift 4 

L’un des cas les plus courants de manipulation de chaînes est celui des réponses JSON. Dans cet exemple, j’ai créé une extension dans mon application de surveillance pour supprimer les derniers caractères d’un object JSON Bitcoin.

Swift 3:

 func dropLast(_ n: Int = 0) -> Ssortingng { return Ssortingng(characters.dropLast(n)) 

Message d’erreur Xcode 9.1:

“caractères” est obsolète: veuillez utiliser directement Ssortingng ou Subssortingng

Xcode nous dit d’utiliser directement la variable de chaîne ou la méthode.

Swift 4:

 func dropLast(_ n: Int = 0) -> Ssortingng { return Ssortingng(dropLast(n)) } 

Extension complète:

 extension Ssortingng { func dropLast(_ n: Int = 0) -> Ssortingng { return Ssortingng(dropLast(n)) } var dropLast: Ssortingng { return dropLast() } } 

Appel:

 print("rate:\(response.USDRate)") let literalMarketPrice = response.USDRate.dropLast(2) print("literal market price: \(literalMarketPrice)") 

Console:

 //rate:7,101.0888 //JSON float //literal market price: 7,101.08 // JSON ssortingng literal 

Exemples supplémentaires:

  • print("Spell has \(invisibleSpellName.count) characters.")
  • return Ssortingng(dropLast(n))
  • return Ssortingng(removeLast(n))

Documentation:

Vous utiliserez souvent des méthodes communes telles que dropLast() ou removeLast() ou count . Voici la documentation explicite d’Apple pour chaque méthode.

droplast ()

removelast ()

compter les caractères

Cet avertissement est juste un sumt de l’iceberg, il y avait un butin 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, sous-chaînes 🙂

Ceci est une excellente lecture à ce sujet: https://useyourloaf.com/blog/updating-ssortingngs-for-swift-4/

Utilisez ces characters car Ssortingng cessé d’être une collection dans Swift 2.0. Cependant, il s’agit toujours d’un code valide dans Swift 4 mais n’est plus nécessaire maintenant que Ssortingng est à nouveau une Collection .

Par exemple, une Ssortingng Swift 4 a maintenant une propriété de comptage directe qui donne le nombre de caractères:

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

Exemples pour Ssortingng et SubSsortingng.

Chaîne

Swift 4 Ssortingng obtient désormais directement l’élément qui donne le premier caractère de Ssortingng: (ssortingng.characters.first)

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

Sous-chaîne

Utiliser SubSsortingng pour obtenir le premier caractère.

 let spssortingng = "Welcome" let indexStartOfText = spssortingng.index(spssortingng.startIndex, offsetBy: 1) let sub = spssortingng.subssortingng(to: indexStartOfText) print(sub) //W 

Vous pouvez également utiliser ce code pour le regroupement de 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)