Cómo resolver 'scanLocation' quedó en desuso en iOS 13.0

10

Cuando intento usar un escáner, recibo la advertencia de que 'scanLocation' ha quedado en desuso en iOS 13.0. Dado que poder escanear desde la siguiente ubicación es bastante fundamental para escanear un String, se pregunta qué usar en lugar de scanLocation. La documentación de Apple para Scanner ni siquiera menciona la desaprobación, y mucho menos sugiere lo que ha reemplazado a scanLocation.

Ejemplo de uso de scanLocation, que está en desuso:

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

Respuestas:

9

tl; dr: se usa en currentIndexlugar de scanLocationcuando se usa Scanneren Swift.

Vergüenza para Apple por la mala documentación. Pero según la información en el archivo NSScanner.h para la versión Objective-C de Scanner, solo en Swift, la scanLocationpropiedad ha quedado en desuso y ha sido reemplazada por la currentIndexpropiedad.

rmaddy
fuente
2

@rmaddy ya dio la respuesta correcta, pero esto muestra cómo incrementar el, currentIndexya que es diferente de simplemente agregar 1 al 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
fuente
¿Cómo lo restablecerías de nuevo a '0' por favor? p.ej. scanner.scanLocation = 0
GameDev
Usted no Acaba de crear una nueva instancia deScanner
Chuck Krutsinger