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
}
Chuck Krutsinger
la source

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é.

rmaddy
la source
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)
}
Chuck Krutsinger
la source
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