Как решить 'scanLocation' устарела в iOS 13.0

10

При попытке использовать сканер я получаю предупреждение о том, что «scanLocation» устарела в iOS 13.0. Поскольку возможность сканирования из следующего места довольно важна для сканирования строки, интересно, что использовать вместо scanLocation. Документация Apple по Scanner даже не упоминает об устаревании, не говоря уже о том, что заняло место scanLocation.

Пример использования scanLocation, который устарел:

while !scanner.isAtEnd {
    print(scanner.scanUpToCharacters(from: brackets))
    let block = scanner.string[scanner.currentIndex...]
    print(block)
    scanner.scanLocation = scanner.scanLocation + 1
}
Чак Круцингер
источник

Ответы:

9

tl; dr - использовать currentIndexвместо scanLocationиспользования Scannerв Swift.

Позор Apple за плохую документацию. Но на основании информации в файле NSScanner.h для версии Сканера Objective-C только в Swift scanLocationсвойство устарело и заменено currentIndexсвойством.

rmaddy
источник
2

@rmaddy уже дал правильный ответ, но это показывает, как увеличить значение, currentIndexпоскольку оно отличается от простого добавления 1 в 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)
}
Чак Круцингер
источник
как бы вы сбросили его обратно на «0», пожалуйста? например. scanner.scanLocation = 0
GameDev
Вы не Вы просто создаете новый экземплярScanner
Чак Круцингер