web-dev-qa-db-fra.com

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

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 demandant 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
}
10
Chuck Krutsinger

tl; dr - utilisez currentIndex au lieu de scanLocation lorsque vous utilisez Scanner 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 propriété scanLocation a été obsolète et remplacé par la propriété currentIndex.

7
rmaddy

@rmaddy a déjà donné la bonne réponse, mais cela montre comment incrémenter le currentIndex car c'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)
}
1
Chuck Krutsinger