Como resolver 'scanLocation' foi descontinuado no iOS 13.0

10

Ao tentar usar um scanner, recebo o aviso de que 'scanLocation' foi descontinuado no iOS 13.0. Como poder digitalizar a partir do próximo local é fundamental para digitalizar uma String, imaginando o que usar em vez de scanLocation. A documentação da Apple para o Scanner nem menciona a depreciação, e muito menos sugere o que substituiu o scanLocation.

Exemplo de uso de scanLocation, que está obsoleto:

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

Respostas:

9

tl; dr - use em currentIndexvez de scanLocationusar Scannerno Swift.

Que vergonha para a Apple pela documentação ruim. Porém, com base nas informações do arquivo NSScanner.h da versão Objective-C do Scanner, apenas no Swift, a scanLocationpropriedade foi preterida e substituída pela currentIndexpropriedade.

rmaddy
fonte
2

O @rmaddy já deu a resposta correta, mas isso mostra como incrementar o valor, currentIndexpois é diferente de apenas adicionar 1 ao 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
fonte
como você o redefiniria para '0', por favor? por exemplo. scanner.scanLocation = 0
GameDev 3/03
Você não Você acabou de criar uma nova instância deScanner
Chuck Krutsinger 03/03