Як вирішити "scanLocation", в iOS 13.0 застаріло


10

Коли я намагаюся використовувати Сканер, я отримую попередження про те, що в iOS 13.0 було скасовано "scanLocation". Оскільки можливість сканування з наступного місця є досить важливою для сканування рядка, цікаво, що використовувати замість 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.

Сором Яблуку за погану документацію. Але виходячи з інформації у файлі NSScanner.h для версії Scanner 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
Chuck Krutsinger
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.