Das Auflösen von 'scanLocation' war in iOS 13.0 veraltet

10

Beim Versuch, einen Scanner zu verwenden, wird die Warnung angezeigt, dass 'scanLocation' in iOS 13.0 veraltet ist. Da das Scannen vom nächsten Speicherort für das Scannen eines Strings von grundlegender Bedeutung ist, sollten Sie sich fragen, was anstelle von scanLocation verwendet werden soll. In der Dokumentation von Apple für Scanner wird die Abwertung nicht einmal erwähnt, geschweige denn vorgeschlagen, was anstelle von scanLocation eingesetzt wurde.

Beispiel für die Verwendung von scanLocation, das veraltet ist:

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

Antworten:

9

tl; dr - Einsatz currentIndexstatt scanLocationbei der Verwendung Scannerin Swift.

Schade um die schlechte Dokumentation bei Apple. Basierend auf Informationen in der Datei NSScanner.h für die Objective-C-Version von Scanner wurde die scanLocationEigenschaft jedoch nur in Swift veraltet und durch die currentIndexEigenschaft ersetzt.

rmaddy
quelle
2

@rmaddy hat bereits die richtige Antwort gegeben, aber dies zeigt, wie man das erhöht, currentIndexda es sich davon unterscheidet, nur 1 zum hinzuzufügen 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
quelle
Wie würden Sie es bitte auf '0' zurücksetzen? z.B. scanner.scanLocation = 0
GameDev
Das tust du nicht. Sie erstellen gerade eine neue Instanz vonScanner
Chuck Krutsinger