Как решить '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свойством.


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
Чак Круцингер
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.