Come risolvere "scanLocation" è stato deprecato in iOS 13.0


10

Quando provo ad usare uno scanner, ricevo l'avvertimento che 'scanLocation' è stato deprecato in iOS 13.0. Poiché essere in grado di scansionare dalla posizione successiva è piuttosto fondamentale per scansionare una stringa, chiedersi cosa usare invece di scanLocation. La documentazione di Apple per Scanner non menziona nemmeno la deprecazione, per non parlare del fatto che ha preso il posto di scanLocation.

Esempio di utilizzo di scanLocation, che è obsoleto:

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

Risposte:


9

tl; dr - usa currentIndexinvece di scanLocationquando usi Scannerin Swift.

Peccato per Apple per la scarsa documentazione. Ma in base alle informazioni nel file NSScanner.h per la versione di Scanner di Objective-C, solo in Swift, la scanLocationproprietà è stata deprecata e sostituita con la currentIndexproprietà.


2

@rmaddy ha già dato la risposta corretta, ma questo mostra come incrementare il currentIndexdato che è diverso dal solo aggiungere 1 a 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)
}

come reimpostarlo su '0' per favore? per esempio. scanner.scanLocation = 0
GameDev

Non Devi solo creare una nuova istanza diScanner
Chuck Krutsinger il
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.