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
}

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


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

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
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.