Как решить 'scanLocation' устарела в iOS 13.0 - PullRequest
1 голос
/ 07 ноября 2019

При попытке использовать сканер я получаю предупреждение о том, что «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
}

Ответы [ 2 ]

2 голосов
/ 07 ноября 2019

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

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

0 голосов
/ 08 ноября 2019

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