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
}

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.


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)
}

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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.