Sposób rozwiązania „scanLocation” był przestarzały w iOS 13.0

10

Podczas próby użycia skanera pojawia się ostrzeżenie, że funkcja „scanLocation” była przestarzała w systemie iOS 13.0. Ponieważ możliwość skanowania z następnej lokalizacji ma zasadnicze znaczenie dla skanowania ciągu, zastanawiam się, czego użyć zamiast scanLocation. Dokumentacja Apple do skanera nawet nie wspominając o Wycofanie, nie mówiąc już sugerują, co miało miejsce scanLocation.

Przykład użycia przestarzałego scanLocation:

while !scanner.isAtEnd {
    print(scanner.scanUpToCharacters(from: brackets))
    let block = scanner.string[scanner.currentIndex...]
    print(block)
    scanner.scanLocation = scanner.scanLocation + 1
}
Chuck Krutsinger
źródło

Odpowiedzi:

9

tl; dr - użyj currentIndexzamiast scanLocationpodczas używania Scannerw Swift.

Wstydź się Apple za słabą dokumentację. Ale na podstawie informacji zawartych w pliku NSScanner.h dla wersji skanera Objective-C tylko w Swift scanLocationwłaściwość została uznana za przestarzałą i zastąpiona currentIndexwłaściwością.

rmaddy
źródło
2

@rmaddy już podał prawidłową odpowiedź, ale pokazuje to, jak zwiększyć, currentIndexponieważ różni się to od dodania 1 do 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
źródło
jak zresetowałbyś go z powrotem do „0”, proszę? na przykład. scanner.scanLocation = 0
GameDev
Ty nie. Właśnie utworzyłeś nową instancjęScanner
Chuck Krutsinger