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
}

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.


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

¿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
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.