Cara mengatasi 'scanLocation' sudah tidak digunakan lagi di iOS 13.0

10

Saat mencoba menggunakan Scanner, saya mendapat peringatan bahwa 'scanLocation' sudah tidak digunakan lagi di iOS 13.0. Karena dapat memindai dari lokasi berikutnya agak mendasar untuk memindai sebuah String, bertanya-tanya apa yang harus digunakan daripada scanLocation. Dokumentasi Apple untuk Scanner bahkan tidak menyebutkan penghinaan, apalagi menyarankan apa yang telah menggantikan ScanLocation.

Contoh menggunakan scanLocation, yang sudah usang:

while !scanner.isAtEnd {
    print(scanner.scanUpToCharacters(from: brackets))
    let block = scanner.string[scanner.currentIndex...]
    print(block)
    scanner.scanLocation = scanner.scanLocation + 1
}
Chuck Krutsinger
sumber

Jawaban:

9

tl; dr - gunakan currentIndexalih-alih scanLocationsaat menggunakan Scannerdi Swift.

Malu pada Apple karena dokumentasi yang buruk. Tetapi berdasarkan informasi dalam file NSScanner.h untuk versi Objective-C Scanner, hanya di Swift, scanLocationproperti telah ditinggalkan dan diganti dengan currentIndexproperti.

rmaddy
sumber
2

@rmaddy sudah memberikan jawaban yang benar, tetapi ini menunjukkan cara menaikkan currentIndexkarena berbeda dari hanya menambahkan 1 ke 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)
}
Chuck Krutsinger
sumber
bagaimana Anda mengatur ulang kembali ke '0'? misalnya. scanner.scanLocation = 0
GameDev
Kamu tidak. Anda baru saja membuat contoh baruScanner
Chuck Krutsinger