Comment résoudre «scanLocation» est déconseillé dans iOS 13.0


10

Lorsque j'essaie d'utiliser un scanner, j'obtiens l'avertissement que «scanLocation» est déconseillé dans iOS 13.0. Puisqu'il est possible de numériser à partir de l'emplacement suivant est plutôt fondamental pour balayer une chaîne, se demander quoi utiliser au lieu de scanLocation. La documentation d'Apple pour Scanner ne mentionne même pas la dépréciation, et encore moins suggère ce qui a pris la place de scanLocation.

Exemple d'utilisation de scanLocation, qui est obsolète:

while !scanner.isAtEnd {
    print(scanner.scanUpToCharacters(from: brackets))
    let block = scanner.string[scanner.currentIndex...]
    print(block)
    scanner.scanLocation = scanner.scanLocation + 1
}

Réponses:


9

tl; dr - utiliser currentIndexau lieu de scanLocationlors de l'utilisationScanner dans Swift.

Honte à Apple pour la mauvaise documentation. Mais sur la base des informations contenues dans le fichier NSScanner.h pour la version Objective-C de Scanner, uniquement dans Swift, la scanLocationpropriété a été déconseillée et remplacée par la currentIndexpropriété.


2

@rmaddy a déjà donné la bonne réponse, mais cela montre comment incrémenter le currentIndexcar il est différent de simplement ajouter 1 au scanLocation.

while !scanner.isAtEnd {
    print(scanner.scanUpToCharacters(from: brackets))
    let block = scanner.string[scanner.currentIndex...]
    print(block)
    scanner.currentIndex = scanner.string.index(after: scanner.currentIndex)
}

comment voulez-vous le réinitialiser à «0» s'il vous plaît? par exemple. scanner.scanLocation = 0
GameDev

Non. Vous venez de créer une nouvelle instance deScanner
Chuck Krutsinger
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.